@saprykinoff

Как открыть окно в потоке QThread?

Ситуация следующая: нужно каждые 5 секунд проверять условие и при необходимости вызывать окно. Делаю через Qthread.
class verification_wind(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.ui = Ui_Verif()
        self.ui.setupUi(self)
        self.setWindowModality(QtCore.Qt.ApplicationModal)
        self.ui.label.setText("Verification Success")
        self.ui.textBrowser.setText(f"Your license was verified. Remains: 3700")

class Checker(QtCore.QThread):
    def run(self) -> None:
        # while 1:
        #     print("thread")
        #     time.sleep(1)
        self.verif = verification_wind()
        self.verif.show()


app = QtWidgets.QApplication([])
th = Checker()
th.start()
sys.exit(app.exec())

Если вызывать окно, то ничего не происходит. Если же вместо открытия окна делать принт, все работает прекрасно. Есть какой-то блокировщик от открытия окон?
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
HemulGM
@HemulGM
Delphi Developer, сис. админ
Application инициализируй полностью в другом потоке. Каждый Application должен быть в свойм потоке. А вот как ты будешь общаться между ними - совсем другой вопрос.
Проще запускать новый процесс с новым окном
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Hivemaster
@Hivemaster
Админ, который хочет программировать
Библиотеки графического интерфейса не предназначены для работы в многопоточном режиме, поэтому с интерфейсом можно работать только из главного потока.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
CTRL+ Москва
от 250 000 до 320 000 ₽
CTRL+ Москва
от 200 000 до 300 000 ₽
CTRL+ Белград
от 250 000 до 320 000 ₽
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час