使 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)
我正在将代码从 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)