Я пытался использовать self.terminate()
в классе QThread, а также self.thread.terminate()
в классе GUI. Я также попытался поставить self.wait()
в обоих случаях. Тем не менее, есть два сценария:
1) Поток вообще не завершается, а графический интерфейс останавливается в ожидании завершения потока. После завершения потока графический интерфейс размораживается, и все возвращается в нормальное состояние.
2) Поток действительно завершается, но в то же время замораживает все приложение.
Я также пытался использовать self.thread.exit()
. Радости нет.
Чтобы уточнить, я пытаюсь реализовать кнопку прерывания пользователя в GUI, которая прервала бы выполнение потока в любой момент времени.
Заранее спасибо.
EDIT:
Вот метод run()
:
def run(self):
if self.create:
print "calling create f"
self.emit(SIGNAL("disableCreate(bool)"))
self.create(self.password, self.email)
self.stop()
self.emit(SIGNAL("finished(bool)"), self.completed)
def stop(self):
#Tried the following, one by one (and all together too, I was desperate):
self.terminate()
self.quit()
self.exit()
self.stopped = True
self.terminated = True
#Neither works
А вот метод класса GUI для прерывания потока:
def on_abort_clicked(self):
self.thread = threadmodule.Thread()
#Tried the following, also one by one and altogether:
self.thread.exit()
self.thread.wait()
self.thread.quit()
self.thread.terminate()
#Again, none work