事件wxpython,触发错误的功能

时间:2014-04-10 09:42:43

标签: python events python-2.7 wxpython wxwidgets

我的代码:

表示范围(0,3)中的i:

    self.thermopage.selectcompbutt.variables[0][0].Bind(event=wx.EVT_BUTTON,
       handler =lambda event,row=0,page=0:self.OnButtonClick(event,row,page),
        id = self.thermopage.selectcompbutt.variables[0][0].GetId())  

def OnButtonClick(self,event,ro,whatpage):

    self.dialogframe= wx.Frame(self, size=(100,140))
    self.dialogpanel=wx.Panel(self.dialogframe)
    self.dialogsizer = wx.BoxSizer(wx.VERTICAL)
    self.text = wx.StaticText(self.dialogpanel,id=wx.NewId() ,
                          label = "Available COM-Ports")
    self.dropdown = wx.ComboBox(self.dialogpanel, id=wx.NewId(), choices= strings,
                                     size=(100,10))
    self.chosebutton = wx.Button(self.dialogpanel,id = wx.NewId(), label = "Select", 
                                   size= (100,15))
    self.dialogsizer.Add(self.chosebutton,1, wx.LEFT)
    self.dialogpanel.SetSizerAndFit(self.dialogsizer)
    self.dialogframe.Show()
    print self.chosebutton.GetId()
    self.chosebutton.Bind(wx.EVT_BUTTON, handler=self.OnSelect(event))

def OnSelect(self,evt):

      #do something

问题在于当我按下将打开对话框的按钮(选择按钮所在的位置)时,OnSelect()函数会运行。

我想打开对话框,当我按下“choosebutton”时,OnSelect()会运行。

我该怎么做?为什么函数会触发?

1 个答案:

答案 0 :(得分:0)

当你绑定到OnSelect时,你有()调用了该方法然后绑定到Onselect的结果,当你绑定到一个方法或函数时,你不应该使用()所以绑定是对象本身。