Qпоток, излучаемый дважды - PullRequest
       0

Qпоток, излучаемый дважды

0 голосов
/ 22 сентября 2018

Создан Qthread для обработки проверки версии для моего приложения.Поток работает отлично, за исключением того, что он излучает законченный сигнал дважды.

class myThread(QtCore.QThread):

    def run(self):
        print("Im running.")
        self.finished.emit()

    def stop(self):
        self.terminate()

class myApp(QtWidgets.QMainWindow, Ui_App):

    def __init__(self, parent=None):
        super(myApp, self).__init__()

        self.myThread = myThread()
        self.myThread.start()

        self.myThread.finished.connect(self.allDone)

    def allDone(self):
        print('Thread is done')

Как я могу предотвратить повторение сигнала дважды?

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

Благодаря @handle и предоставленным вами документам я смог найти свой ответ.

Мне нужно было создать сигнал в классе потока.Мой рабочий код ниже.

class myThread(QtCore.QThread):

    signalStatus = QtCore.pyqtSignal()

    def __init__(self, parent=None):
        super(UpdateThread, self).__init__(parent)

    def run(self):
        print("Im running.")
        self.signalStatus.emit()

    def stop(self):
        self.terminate()

class myApp(QtWidgets.QMainWindow, Ui_App):

    def __init__(self, parent=None):
        super(myApp, self).__init__()

        self.myThread = myThread()
        self.myThread.start()

        self.myThread.finished.connect(self.allDone)

    @QtCore.pyqtSlot()
    def allDone(self):
        print('Thread is done')
0 голосов
/ 22 сентября 2018

Ваш класс myThread наследуется от QtCore.QThread, в котором уже есть сигнал finished, поэтому я предполагаю, что проблема в вашей (лишней) строке self.finished.emit().

Похоже, они могут помочь:

На SO:

Документы:

Документы для привязок PySide Qt:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...