【发布时间】:2020-05-17 18:20:59
【问题描述】:
情况
我目前正在使用 wxPython (wxWidgets for Python) 编写一个应用程序。
在这个应用程序中显示了一个对话列表,每行末尾都有一个“打开对话”按钮。我们将此窗口称为“所有对话”。
点击任一按钮调用函数“open_conversation(self, event)”,显示完整对话。
我要做的是,在窗口“所有对话”的生成时,在每个“绑定”事件或每个“wxButton”对象中传递一些自定义数据,例如字符串(联系人的姓名)实例) ;之后,当单击按钮时,它将在“事件”参数中传递所述数据,从而可以在函数中使用 contact = event.CustomData["recipient"] 之类的内容访问。
问题
参考documentation,我找到了“Bind”方法的“userData”关键字,但是在Python中好像不行。
self.openConversation_button.Bind(wx.EVT_BUTTON, self.open_conversation, userData="test")
TypeError: _EvtHandler_Bind() got an unexpected keyword argument 'userData'
更新
我已将 Rolf of Saxony 的解决方案标记为正确,因为它最适合我的需要,但我一般建议使用 VZ 建议的自定义事件系统。
【问题讨论】:
-
您可以创建自定义事件。见wxPython docs
-
好吧,我会深入研究;我可以假设没有内置的方法吗?