15
Сен
2021

Вызов функции из другого потока

У меня есть окно PyQt5, оно существует в своем "главном" потоке.
При нажатии на кнопку в гуи, запускается второй "бэк-енд" поток(QThread), там происходит открытие файлa, с последующей обработкой данных и сохранением.

Вопрос: как можно из "бэк-енд" потока вызвать, скажем, мэссдж-бокс в гуи с ошибкой или другой информацией?

import sys
from PyQt5 import QtWidgets
from PyQt5.QtCore import QThread
from PyQt5.QtWidgets import QMessageBox


class Backend(QThread):
    def __init__(self, path) -> None:
        QThread.__init__(self)
        self.path = path

    def run(self):
        # file.open(self.path)
        # .......
        # file.save(other.path)
        print('Вызов фун-ии notifications(status)')
    

class MyApp(QtWidgets.QDialog):
    def __init__(self) -> None:
        super().__init__()

        self.bc = Backend('./')

        self.btn = QtWidgets.QPushButton('Начать', self)
        self.setGeometry(300,400,300,150)

        self.btn.clicked.connect(self.bc.start)

    def notifications(self, **kwargs):
        if kwargs['status'] == 'success':
            QMessageBox.information(self, 'Оповещение', 'Файл преобразован и успешно сохранен!')
        else:
            QMessageBox.critical(self, 'Ошибка', 'Что-то пошло не так')


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    main = MyApp()
    main.show()
    sys.exit(app.exec_())

Заранее спасибо!

Источник: https://ru.stackoverflow.com/questions/1328548/%D0%92%D1%8B%D0%B7%D0%BE%D0%B2-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8-%D0%B8%D0%B7-%D0%B4%D1%80%D1%83%D0%B3%D0%BE%D0%B3%D0%BE-%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%B0

Тебе может это понравится...

Добавить комментарий