Почему эта программа ничего не печатает?
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 не знает, является ли это дублированным вызовом или концептуально другим вызовом, который должен выполняться дополнительно.