gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:24:46 25 4
gpt4 key购买 nike

我目前正在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com