Найти - Пользователи
Полная версия: [pyqt] Уничтожение потока
Начало » GUI » [pyqt] Уничтожение потока
1
Corban_Dallas
Добрый день господа,
возникла проблема с уничтожением потока. Дело в том, что в моём случае, этот поток работает постоянно. При закрытии приложения, запускается и деструктор этого потока, но из-за того что метод run() ещё выполняется, вылетает ошибка:
QThread: Destroyed while thread is still running
Полагаю что тут, перед уничтожением потока, необходимо в выполнить terminate(), но кокой метод класса QThread переопределить, что бы добавить туда эту строчку не сообразить не могу.
Rodegast
> но кокой метод класса QThread переопределить, что бы добавить туда эту строчку не сообразить не могу.

Не надо его переопределять, его надо вызвать.
Corban_Dallas
Rodegast
Не надо его переопределять, его надо вызвать.
да, вызвать перед уничтожением потока, но как это сделать? Пробовал вызывать при срабатывании события closeEvent,
class MyThread(QThread):
  ...
  def closeEvent(self, event):
      self.terminate()
      super(MyThread, self).closeEvent(event)
  ...
но как выяснилось при закрытии приложения, closeEvent не срабатывает, и соответственно self.terminate() не вызывается.
Rodegast
Как то так:
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()
		# ЛЯЛЯЛЯ
Corban_Dallas
Rodegast, способ конечно рабочий, благодарю. Но хочется найти способ как это реализовать внутри класса MyThread.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB