【问题标题】:PyQt5 support for signals in classes not inheriting from QObjectPyQt5 支持不从 QObject 继承的类中的信号
【发布时间】:2017-04-26 12:55:59
【问题描述】:

在“PyQt4 和 PyQt5 之间的差异”部分 (http://pyqt.sourceforge.net/Docs/PyQt5/pyqt4_differences.html),我可以阅读以下行:

与 PyQt4 不同,PyQt5 支持在未从 QObject 子类化的类中定义属性、信号和槽(即在 mixins 中)。

但是,在“支持信号和插槽”部分 (http://pyqt.sourceforge.net/Docs/PyQt5/signals_slots.html),我可以阅读:

新信号只能在 QObject 的子类中定义。它们必须是类定义的一部分,并且不能在类定义后作为类属性动态添加。

是我误解了什么还是两句话相互矛盾?

【问题讨论】:

  • 第二次引用正确:)

标签: python qt pyqt5 qobject


【解决方案1】:

注意 in mixins 部分。这意味着您可以执行以下操作:

from PyQt5.QtCore import pyqtSignal, QObject

class SignalMixin:
    sig = pyqtSignal()

class Obj(SignalMixin, QObject):
    pass

o = Obj()
o.sig.connect(lambda: print('foo'))
o.sig.emit()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多