@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())

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

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

Войти через центр авторизации
Похожие вопросы