首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将PyQt4字符串样式信号转换为PyQt5信号?

将PyQt4字符串样式信号转换为PyQt5信号?
EN

Stack Overflow用户
提问于 2018-10-31 04:46:19
回答 2查看 0关注 0票数 0

我通常会编写一个小函数来创建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
EN

回答 2

Stack Overflow用户

发布于 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
票数 0
EN

Stack Overflow用户

发布于 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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档