wxpython中绑定事件的方式为 self.Bind(self, event, handler, source=None, id=-1, id2=-1) 但现在如果想要传递其他的参数的,通常的绑定方法不是很好实现,但是可以使用python的lambda表达式来解决这个问题。 创建事件处理函数,传入PlcAddress参数
def SetMotorCurrentValue(self, event, PlcAddress):
"""
设置当前值
"""
self.ElectricNowValue.SetValue(str(PlcData.ReadWriteLimitData.ReadLimitPublicFunction(PlcAddress)))
现在绑定的时候不能把SetMotorCurrentValue直接绑定,使用lambda进行包装,创建定时器函数
def MotorCurrentValueTimer(self, PlcAddress):
"""
当前值定时器
"""
self.CurrentValueTimer = wx.Timer(self)
# 绑定事件
self.Bind(wx.EVT_TIMER, lambda event: self.SetMotorCurrentValue(event, PlcAddress), self.CurrentValueTimer)
# 定时器开启
self.CurrentValueTimer.Start(1000)
就可以传入其他参数了