当a和b都为True时,为什么我的<a>和<b>如果有条件不能执行?

tal*_*ees 2 python wxwidgets wxpython if-statement

编辑:这是我的错字.出于某种原因,我无法在GetEventObject之后看到缺少parantheses.

码:

   def onKeyDown(self, event):
        ESC_list = [self.topic_control,self.search_control]
        print event.GetEventObject() in ESC_list
        keycode = event.GetKeyCode()
        print keycode == wx.WXK_ESCAPE
        if keycode == wx.WXK_ESCAPE and event.GetEventObject in ESC_list:
            print "fire"
            self.onExit(event)
        event.Skip()
Run Code Online (Sandbox Code Playgroud)

当我运行测试时,两个print语句都给我"True",if条件不执行.是什么赋予了?

NPE*_*NPE 5

你错过了一对括号:

if keycode == wx.WXK_ESCAPE and event.GetEventObject() in ESC_list:
#                                                   ^^ HERE
Run Code Online (Sandbox Code Playgroud)

您当前的代码在语法上是有效的,但具有不同的语义.它检查函数对象本身 - 而不是调用函数的结果 - 是否存在ESC_list.