Форум сайта python.su
0
Добрый день господа,
возникла проблема с уничтожением потока. Дело в том, что в моём случае, этот поток работает постоянно. При закрытии приложения, запускается и деструктор этого потока, но из-за того что метод run() ещё выполняется, вылетает ошибка:
QThread: Destroyed while thread is still running
Полагаю что тут, перед уничтожением потока, необходимо в выполнить terminate(), но кокой метод класса QThread переопределить, что бы добавить туда эту строчку не сообразить не могу.
Отредактировано Corban_Dallas (Июнь 10, 2014 16:04:09)
Офлайн
186
> но кокой метод класса QThread переопределить, что бы добавить туда эту строчку не сообразить не могу.
Не надо его переопределять, его надо вызвать.
Офлайн
0
Rodegastда, вызвать перед уничтожением потока, но как это сделать? Пробовал вызывать при срабатывании события closeEvent,
Не надо его переопределять, его надо вызвать.
class MyThread(QThread): ... def closeEvent(self, event): self.terminate() super(MyThread, self).closeEvent(event) ...
Отредактировано Corban_Dallas (Июнь 11, 2014 17:10:40)
Офлайн
186
Как то так:
class potok(QtCore.QThread): def __init__(self, parent = None): QtCore.QThread.__init__(self, parent) # ЛЯЛЯЛЯ def run(self): # ЛЯЛЯЛЯ class okno(QtGui.QMainWindow): def __init__(self): QtGui.QMainWindow.__init__(self) self.potok = potok(self) self.potok.start() # ЛЯЛЯЛЯ def closeEvent(self, event): self.potok.terminate() # ЛЯЛЯЛЯ
Офлайн
0
Rodegast, способ конечно рабочий, благодарю. Но хочется найти способ как это реализовать внутри класса MyThread.
Отредактировано Corban_Dallas (Июнь 12, 2014 09:48:55)
Офлайн