wxPython事件在启动时启动

时间:2014-03-15 11:41:02

标签: python user-interface wxpython

所以我是python的初学者,通常是C / C ++或Java代码。在开发GUI的过程中,我的事件会在程序运行开始时被调用,而不是在我单击按钮时调用。 (我知道我的缩进是错误的,因为我需要将它放入代码块中)。当我左键单击按钮时,如何才能调用我的事件?

def __init__(self, parent, title):
    super(QuadDash, self).__init__(parent, title=title, size=(1024, 780))            
    self.SetBackgroundColour("white")      
    pnl = wx.Panel(self)
    cbtn = wx.Button(pnl, label='Start Quad', pos=(20,30))
    self.Bind(wx.EVT_LEFT_DOWN, self.start_quad_event(), cbtn)        
    self.Show(True) 

def start_quad_event(self):
    dlg = wx.MessageDialog(self, "Test", "ABC", wx.YES_NO | wx.ICON_QUESTION)
    dlg.ShowModal()


if __name__ == '__main__':
    app = wx.App()
    qd = QuadDash(None, title='QuadCopter Dashboard')
    app.MainLoop()

1 个答案:

答案 0 :(得分:1)

违规行是:

self.Bind(wx.EVT_LEFT_DOWN, self.start_quad_event(), cbtn)

您实际上是致电start_quad_event()并将结果传递给bind()

正确的行是:

self.Bind(wx.EVT_LEFT_DOWN, self.start_quad_event, cbtn)

注意:没有括号。实际上,您将函数传递给bind()