将 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 问题的主要内容,如果未能解决你的问题,请参考以下文章

pyqt4 pyqt5 哪个好用

从 PyQt4 迁移到 PyQt5 时面临的问题

PyQt4 代码在 PyQt5 (QHeaderView) 上不起作用

PyQt4->PyQt5 翻译

PyQt5 接收器

从 PyQt5 转换为 PyQt4 [关闭]