【发布时间】:2014-01-22 20:52:01
【问题描述】:
我有以下代码:
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)
但是,callback(param) 从未被调用,因为我没有看到控制台上打印的“in callback”。有人能帮忙吗?我尝试了代码的不同变体(例如,从 test_signal 中删除参数,连接到 self.fallback(),不包括 self.emit 中的任何参数(即删除 {'a': 'b'}))。我一定错过了一个非常简单但基本的机制,但我就是想不通。
提前致谢!
【问题讨论】:
-
我通常使用 C++ qt,但这看起来并不像使用 pyqt 正确定义和发射信号。检查这个pythoncentral.io/…
标签: python qt pyqt qthread emit