我通常会编写一个小函数来创建QActions。但是PyQt5不再支持函数SIGNAL()了。我不知道如何精美地重写这个功能。
def createAction(self, text, slot=None, signal='triggered()'):
action = QAction(text, self)
if slot is not None:
self.connect(action, SIGNAL(signal), slot)
return action
发布于 2018-10-31 13:10:02
我想你可能会过度思考这个问题。新式信号是实例属性,因此您只需使用getattr:
def createAction(self, text, slot=None, signal='triggered'):
action = QAction(text, self)
if slot is not None:
getattr(action, signal).connect(slot)
return action
发布于 2018-10-31 14:06:55
这里的问题是使用字符串(按名称)来引用信号。
在PyQt5下连接信号有三种方法。通过kwargs 看到 连接信号所以我提出了这个解决方案。
def createAction(self, text, slot=None, signal='triggered'):
action = QAction(text, self)
signal_dict = {'triggered':action.triggered, 'changed':action.changed,
'toggled':action.toggled, 'hovered':action.hovered }
if slot is not None:
# self.connect(action, SIGNAL(signal), slot)
signal_dict[signal].connect(slot)
return action
https://stackoverflow.com/questions/-100006202
复制相似问题