QTimer не работает в дополнительном потоке QThread
Я создаю отдельный дополнительный поток и пытаюсь в нем запустить QTimer
, чтобы раз в секунду он вызывал функцию, которая должна запускаться в этом же потоке.
Но этого не происходит, таймер просто не работает.
В чем может быть ошибка?
import sys
from time import sleep
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QMainWindow
from PyQt5.QtCore import QThread, QObject, QTimer
class Worker(QObject):
def __init__(self):
super().__init__()
def print_2(self):
print(2)
def run(self):
self.timer = QTimer()
self.timer.timeout.connect(self.print_2)
self.timer.start(1000)
while True:
print(1)
sleep(1)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.central_widget = QWidget(self)
self.setCentralWidget(self.central_widget)
self.layout_window = QVBoxLayout()
self.central_widget.setLayout(self.layout_window)
self.btn = QPushButton('Запустить поток')
self.btn.clicked.connect(self.start_thread)
self.layout_window.addWidget(self.btn)
def start_thread(self):
self.main_thread = QThread(parent=self)
self.worker = Worker()
self.worker.moveToThread(self.main_thread)
self.main_thread.started.connect(self.worker.run)
self.main_thread.start()
app = QApplication(sys.argv)
app.setStyle('Fusion')
main_window = MainWindow()
main_window.show()
sys.exit(app.exec_())