ADB*_*ADB 7 user-interface pyqt qt-signals pyqt5
我一直试图找到一种方法来从主外部的Python线程更新GUI线程.sourceforge上的PyQt5文档有关于如何执行此操作的良好说明.但我仍然无法让事情发挥作用.
有没有一种很好的方法来解释交互式会话的以下输出?不应该有办法在这些对象上调用emit方法吗?
>>> from PyQt5.QtCore import QObject, pyqtSignal
>>> obj = QObject()
>>> sig = pyqtSignal()
>>> obj.emit(sig)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'QObject' object has no attribute 'emit'
Run Code Online (Sandbox Code Playgroud)
和
>>> obj.sig.emit()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'QObject' object has no attribute 'sig'
Run Code Online (Sandbox Code Playgroud)
和
>>> obj.sig = pyqtSignal()
>>> obj.sig.emit()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'PyQt5.QtCore.pyqtSignal' object has no attribute 'emit'
Run Code Online (Sandbox Code Playgroud)
zro*_*ong 21
以下单词和代码在PyQt5文档中.
新信号只应在 QObject的子类中定义.它们必须是类定义的一部分,并且在定义类之后不能作为类属性动态添加.
from PyQt5.QtCore import QObject, pyqtSignal
class Foo(QObject):
# Define a new signal called 'trigger' that has no arguments.
trigger = pyqtSignal()
def connect_and_emit_trigger(self):
# Connect the trigger signal to a slot.
self.trigger.connect(self.handle_trigger)
# Emit the signal.
self.trigger.emit()
def handle_trigger(self):
# Show that the slot has been called.
print "trigger signal received"
Run Code Online (Sandbox Code Playgroud)