【问题标题】:Events wxpython, trigger wrong function事件 wxpython,触发错误函数
【发布时间】:2014-05-23 22:33:24
【问题描述】:

我的代码:

对于范围内的 i (0,3):

    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() 函数运行。

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

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

【问题讨论】:

  • 当你绑定到 OnSelect 时,你有 (),它调用了方法然后绑定到 Onselect 的结果,当你绑定到方法或函数时,你不应该使用 (),所以绑定是到对象本身。
  • 太棒了!谢谢,那解决了。如此简单的解决方案:-)
  • 添加了我的评论作为答案,因为它解决了您的问题。

标签: python events python-2.7 wxpython wxwidgets


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 2021-06-26
    相关资源
    最近更新 更多