在PyQt中,线程之间的通信有一些问题。我使用信号在两个线程(发送者和侦听器)之间进行通信。发送者发送消息,这些消息应该由侦听器接收。但是,没有收到任何消息。有人能告诉我出了什么问题吗?我相信这一定很简单,但我已经找了几个小时,什么也没找到。提前谢谢!
from PyQt4 import QtCore,QtGui
import time
class Listener(QtCore.QThread):
def __init__(self):
super(Listener,self).__init__()
def run(self):
# just stay alive, waiting for messages
print 'Listener started'
while True:
print '...'
time.sleep(2)
def say_hello(self):
print ' --> Receiver: Hello World!'
class Sender(QtCore.QThread):
# a signal with no arguments
signal = QtCore.pyqtSignal()
def __init__(self):
super(Sender,self).__init__()
# create and start a listener
self.listener = Listener()
self.listener.start()
# connect up the signal
self.signal.connect(self.listener.say_hello)
# start this thread
self.start()
def run(self):
print 'Sender starting'
# send five signals
for i in range(5):
print 'Sender -->'
self.signal.emit()
time.sleep(2)
# the sender's work is done
print 'Sender finished'
问题是一个QThread要发送/接收信号,它需要运行一个EventLoop。你没有,所以没有机会回复。查看此日志:You're doing it wrong
这里有一个对我有效的例子-注意在连接信号之前需要调用moveToThread(这在博客中没有提到-不确定它是否是PyQt特有的),否则它们将在主线程中运行。
我不确定这是否是你所需要的,但它工作得很好。。。
相关问题 更多 >
编程相关推荐