将 PyQt4 代码适配到 PyQt5,SIGNAL 问题
Posted
技术标签:
【中文标题】将 PyQt4 代码适配到 PyQt5,SIGNAL 问题【英文标题】:Adapt PyQt4 code to PyQt5, problem with SIGNAL 【发布时间】:2020-06-15 20:51:50 【问题描述】:我正在将代码从 PyQt4 转换为 PyQt5 我遇到两个困难,首先是用信号名称和信号创建一个信号字典
MY_SIGNALS =
'clicked': SIGNAL ('clicked'),
'currentIndexChanged': SIGNAL ('currentIndexChanged')
...
其次,在一个函数中,我以这样的方式接收一个小部件和一个信号名称
def connect_actions (received_action, my_control):
...
connect (my_control, MY_SIGNALS [received_action], function_exec)
一种解决方案是检查接收到的字符串和小部件
if my_control is QtWidgets.QPushButton:
if received_action is "clicked":
my_pushbutton.clicked.connect (function_exec)
但是有几十个小部件和令牌,有没有办法在这样的情况下调整代码 像在 PyQt4 中那样按名称分配令牌的方法?
我该如何调整这段代码?
【问题讨论】:
【参考方案1】:一个可能的解决方案是使用getattr
:
def connect_actions(received_action, my_control):
getattr(my_control, received_action).connect(function_exec)
【讨论】:
以上是关于将 PyQt4 代码适配到 PyQt5,SIGNAL 问题的主要内容,如果未能解决你的问题,请参考以下文章