python - wxPython 中的 sendMessage() takes at most 3 arguments (4 given) 错误

标签 python python-2.7 user-interface wxpython publish-subscribe

我目前正在 Windows 7 操作系统上使用 python v2.7 和 wxPython v3.0 开发一个 GUI 应用程序。 我正在使用 pubsub 模块将信息发送到我的主 GUI 线程以更新我的 GUI。 我正在使用 wx.CallAfter() 将消息发送到主 GUI 循环。

问题:在我的程序中有一个实例,我需要使用 wx.CallAfter() 发送两个 list,如下所示:

wx.CallAfter(pub.sendMessage, 'Update', ListA, ListB)

我收到以下错误:

sendMessage() takes at most 3 arguments (4 given)

是否可以在不修改接收此消息的方法的情况下解决此问题?

wx.CallAfter(pub.sendMessage, 'Update', ListA) 使用魅力。

感谢您的宝贵时间。

回答:我正在使用以下导入

from wx.lib.pubsub import setuparg1
from wx.lib.pubsub import pub

我应该使用以下方法解决我的问题:

from wx.lib.pubsub import setupkwargs
from wx.lib.pubsub import pub

最佳答案

您只能通过关键字值发送消息,因此您必须这样做:

from wx.lib.pubsub import pub 
...
wx.CallAfter(pub.sendMessage, 'Update', arg1 = ListA, arg2 = ListB)

arg1 和 arg2 必须与监听器参数相同(因此给定主题(“更新”)的所有监听器以及该主题的所有发送者必须使用相同的参数名称;但顺序无关紧要,谢谢到 python 的关键字参数)。

注意:以上假设您使用的是相当新的 pubsub 版本,使用 pubsub 的默认消息传递协议(protocol),而不是 v1 或 arg1。尝试打印 pub.VERSION_STR 或 pubsub.VERSION (后者是最新的,wxpython phoenix,不太可能是你正在使用的那个)。此外,如果有 from wx.lib.pubsub import setupv1from wx.lib.pubsub import setuparg1 那么您使用的是旧的 pubsub,它只接受一条消息数据,但不需要 arg 名称(这也可以解释您的问题)。

关于python - wxPython 中的 sendMessage() takes at most 3 arguments (4 given) 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22296646/

相关文章:

python - ftplib: socket.error during/after LIST//ssl._sslobj.shutdown()/连接超时

excel - 在 Excel 电子表格中捕获 Click 事件

java - 边框布局未占用所有可用空间

python - 如何让多个处理程序使用日志?

python - 无法在 python 列表中追加元素

python - 应用 alembic 迁移后表序列 id 不增加

python - 使用 beautiful soup 抓取数据时网页表结构出现问题

Python pandas : add new columns based on the existed a column value, 并将新列的值设置为 1 或 0

iphone - 在 IOS 中隐藏状态栏时显示网络事件指示器

python - 如何在本地计算机(Mac 10.7)上测试发送带有 Django 注册的电子邮件?