Qt.QueuedConnection从不发送消息

时间:2011-06-13 21:21:56

标签: python qt pyqt

为什么这个程序不打印任何东西?

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是否会自动删除重复事件。

1 个答案:

答案 0 :(得分:3)

我不是Python(或PyQt)的专家,但是一旦应用程序再次进入事件循环,排队连接才会被传递,而普通连接对应于直接函数调用。所以我想在你的情况下你必须等到应用程序进入事件循环才能调用插槽(虽然我在你的代码中没有看到任何应用程序对象)。

编辑:我怀疑它会删除重复的呼叫,因为Qt不知道它是重复呼叫还是应该另外执行的概念上不同的呼叫。