我在PyQt中的線程之間進行通信時遇到了一些問題。我正在使用信號在兩個線程之間進行通信,即發件人和聽衆。發件人發送消息,這些消息有望由收聽者接收。但是,不會收到任何消息。任何人都可以提出什麼可能會出錯?我確信它一定是簡單的,但我一直在四處尋找,沒有發現任何東西。提前致謝!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'
Qt的決定發出一個信號,該線程取決於哪個線程創建的對象實例的信號。如果你從你的主線程創建一個監聽對象並將信號發送給它的含義,它會調用它們在主線程中。請記住,該對象不是線程。見例如ftp://ftp.qt.nokia.com/videos/DevDays2007/DevDays2007%20-%20Multi-threading_in_Qt.pdf,詳細瞭解Qt中的「線程關聯」。 – 2010-12-01 14:10:18