使 PyQt4 代码适应 PyQt5,SIGNAL 问题

Adapt PyQt4 code to PyQt5, problem with SIGNAL

我正在将代码从 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 一样按名称分配令牌的方法?

如何调整此代码?

一个可能的解决方案是使用 getattr:

def connect_actions(received_action, my_control):
     getattr(my_control, received_action).connect(function_exec)