I am working with sockets. When I receive info from the server I handle it with a method listen that is in a thread. I want to pop up windows from here, so I use signals. 
The problem is that the signal does not trigger the function. Here is a working example:
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()
Tester function is never triggered.
                        
The problem with your code is that, you are emitting the signal before connecting it to the slot! Add two print statements like this:
You will notice that the signal gets emitted before it gets connected! That's why the slot is not triggering.