在我的View类中,我想使用pydispatcher.dispatcher的send方法 一个tkinter Button命令,用于在MVC设计中向我的Controller类发送信号 已按下按钮。我这样做:
self.calc_button = tkinter.Button(self.bottom_frame,text='Convert', \
command=dispatcher.send(signal = 'valueToConvert', sender=dispatcher.Any, message='Kilo'))
奇怪的是(对我而言)是dispatcher.send被“激活”了 创建按钮时。为什么?此外,dispatcher.send永远不会 按下按钮时“激活”。为什么呢?
在控制器类中,这是“监听器”构造:
class Controller():
def __init__(self):
dispatcher.connect(self.myListener,
signal='valueToConvert',
sender=dispatcher.Any)
self.model = Model()
self.view = View()
def myListener(self, message, arg2=None):
print("Received the following message: " + message)
答案 0 :(得分:1)
我对调度员一无所知,但这是一个常见问题:您将函数调用的结果分配给command
,因为您没有将其包含在一个lambda。尝试:
self.calc_button = tkinter.Button(self.bottom_frame,text='Convert', \
command=lambda *args: dispatcher.send(signal = 'valueToConvert', sender=dispatcher.Any, message='Kilo'))