I recently started learning Threads in PyQT5 and ran into the problem of changing the Label's text in Main class from Thread. I read about pyqtSignal ans pyqtSlot but nothing in my programm works. Sorry for my bad english btw :/// So I tried to make a timer that will output a value to QLabel, but got only TypeError: native Qt signal is not callable
`
import time
import sqlite3
import sys
from random import choice
from TheGame import Ui_MainWindow
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtCore import *
from main import START_PLAYERS_COUNT, pl_names
class Worker(QThread):
def __init__(self, sec):
QThread.__init__(self)
self.seconds = sec
self.message = pyqtSignal(str)
def run(self):
self.sec = self.seconds
self.message.emit(self.seconds)
time.sleep(1)
for i in range(self.sec):
self.seconds -= 1
self.message.emit(self.seconds)
time.sleep(1)
print('ok')
class MainGame(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.initUI()
self.rounds()
def rounds(self):
self.quests = []
self.thread = QThread(self)
self.worker = Worker(10)
self.worker.moveToThread(self.thread)
self.worker.message(self.text)
self.thread.start()
def text(self, seconds):
self.time_num.setText(seconds)
def except_hook(cls, exception, traceback):
sys.__excepthook__(cls, exception, traceback)
players_results = {}
for i in pl_names:
players_results[i] = int(), int(), int()
if __name__ == '__main__':
app = QApplication(sys.argv)
form = MainGame()
form.show()
sys.excepthook = except_hook
sys.exit(app.exec())
`