У меня есть следующий фрагмент коды:Python QT испускает СИГНАЛ не вызывая функцию обратного вызова
def callback(param):
print "in callback"
class Test(QThread):
def __init__(self):
QThread.__init__(self)
#QObject.connect(self, SIGNAL("test_signal(PyQt_PyObject)"), callback)
print "Test constructed"
def fallback(self, dummy=None):
print "in fallback"
def run(self):
while 1:
print "Test running"
self.emit(SIGNAL("test_signal(PyQt_PyObject)"), {'a': 'b'})
time.sleep(1)
t = None
if __name__ == "__main__":
t = Test()
t.start()
QObject.connect(t, SIGNAL("test_signal(PyQt_PyObject)"), callback)
while True:
time.sleep(2)
Однако, обратный вызов (пары) никогда не вызываются, как, я не вижу «в обратном вызове» напечатан на консоли. Может кто-нибудь помочь с этим? Я пробовал разные варианты кода (например, удаление параметра из test_signal, подключение к self.fallback(), не считая каких-либо параметров в self.emit (т. Е. Удаление {'a': 'b'})). Мне нужно пропустить очень простой, но принципиальный механизм, но я просто не могу понять это.
Заранее благодарен!
Обычно я использую C++ qt, но это не выглядит как правильное определение и эмиссия сигнала с pyqt. Проверьте это http://www.pythoncentral.io/pysidepyqt-tutorial-creating-your-own-signals-and-slots/ –