我正在使用套接字。当我从服务器接收信息时,我使用线程中的方法listen
来处理它。我想从这里弹出窗口,所以我使用信号。
问题是信号不会触发该功能。这是一个有效的例子:
class Client(QtCore.QObject):
signal = QtCore.pyqtSignal()
def __init__(self):
super(Client, self).__init__()
self.thread_wait_server = threading.Thread(target=self.wait_server)
self.thread_wait_server.daemon = True
self.thread_wait_server.start()
def wait_server(self):
print('waiting')
self.signal.emit()
print("'signal emited")
class Main:
def Do(self):
print("'Do' starts")
self.Launch()
time.sleep(2)
print("'Do' ends")
def Launch(self):
print("'Launch' starts")
self.client = Client()
self.client.signal.connect(self.Tester)
print("'Launch' ends")
def Tester(self):
print("Tester Fired!!")
m = Main()
m.Do()
永远不会触发测试器功能。
答案 0 :(得分:0)
您的代码存在的问题是,您在将信号连接到插槽之前发出信号!像这样添加两个打印语句:
print("connecting the signal")
self.client.signal.connect(self.Tester)
print("signal connected")
您会注意到信号在连接之前会发出!这就是插槽没有触发的原因。