Qt.QueuedConnection никогда не отправляет сообщение - PullRequest
1 голос
/ 14 июня 2011

Почему эта программа ничего не печатает?

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 Ответ

3 голосов
/ 14 июня 2011

Я не эксперт по Python (или PyQt), но поставленное в очередь соединение получает только после того, как приложение снова входит в цикл обработки событий, тогда как нормальное соединение соответствует прямому вызову функции.Так что, думаю, в вашем случае вам придется подождать, пока приложение не войдет в цикл обработки событий для вызова слота (хотя я не вижу никаких объектов приложения в вашем коде).

РЕДАКТИРОВАТЬ: И я сомневаюсь, что он удаляет дублирующиеся вызовы, так как Qt не знает, является ли это дублирующим вызовом или концептуально другим вызовом, который должен быть выполнен дополнительно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...