问题描述
|
为什么该程序不打印任何内容?
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class A(QObject):
def __init__(self):
super(A,self).__init__()
sig = pyqtSignal()
@pyqtSlot()
def slot(self):
print(\"received\")
a = A()
a.sig.connect(a.slot,Qt.QueuedConnection)
a.sig.emit()
a.sig.emit()
a.sig.emit()
如果删除Qt.QueuedConnection,它将按预期工作。我正在尝试查看Qt.QueuedConnection是否将自动删除重复的事件。
解决方法
我不是使用Python(或PyQt)的专家,但是只有在应用程序再次进入事件循环后,才会传递排队的连接,而普通连接对应于直接函数调用。因此,我想在您的情况下,您必须等到应用程序进入事件循环才能调用该插槽(尽管我在您的代码中看不到任何应用程序对象)。
编辑:而且我怀疑它会删除重复的呼叫,因为Qt不知道它是重复的呼叫还是应该另外进行的概念上不同的呼叫。