信号未连接到方法

时间:2015-06-25 16:27:22

标签: python multithreading pyqt4 signals-slots

我正在使用套接字。当我从服务器接收信息时,我使用线程中的方法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()

永远不会触发测试器功能。

1 个答案:

答案 0 :(得分:0)

您的代码存在的问题是,您在将信号连接到插槽之前发出信号!像这样添加两个打印语句:

print("connecting the signal")
self.client.signal.connect(self.Tester)
print("signal connected")

您会注意到信号在连接之前会发出!这就是插槽没有触发的原因。