class GameThread(QtCore.QThread):
    update_label_signal = QtCore.pyqtSignal(str)  # creates a signal

    def __init__(self):
        QtCore.QThread.__init__(self)
        self.game_client = GameClient(
        )  # creates an instance for the class GameClient

    def connect(self, txt):
        while True:
            try:
                self.game_client.connect_to_server(
                    txt)  # method for connecting to the server
                break

            except:
                print('Error connecting to server!')
                break

    def send(self, m):
        self.game_client.send_message(m)

    def run(self):  # run executed when start() method called

        while True:
            msg = self.game_client.receive_message(
            )  # gets the message from the server
            sleep(1)  # wait a little before emitting next signal
            if len(msg):

                self.update_label_signal.emit(msg)  # emits signal

            else:
                break
class LoopThread(QtCore.QThread, GameClient):

    update_label_signal = QtCore.pyqtSignal(str)

    def __init__(self, Parent=None):
        QtCore.QThread.__init__(self)
        self.access_server = GameClient()
        self.connection = None

    def run(self):
        while True:
            msg = self.access_server.receive_message()
            if len(msg):
                self.update_label_signal.emit(str(msg))
            else:
                break