У меня есть поток, который работает, и кнопка «остановить поток», которая при нажатии вызывает метод, который вызывает terminate () потока.У меня есть QMessage Box, который подтверждает кнопку остановки, прежде чем она завершается.Функциональность такая же, как и ожидалось, но если я снова запустил поток и нажал кнопку закрытия, я получил бы MessageBox для подтверждения, затем я выбрал подтверждение, и поток остановился, но появилось другое окно подтверждения.Это продолжается таким образом - если я запускаю его 3 раза, мне нужно подтвердить три поля, 4 я получаю 4 и т. Д. Первый блок завершит поток во всех случаях.Кажется, что MessageBox не уничтожается должным образом каждый раз, когда он появляется, поэтому они просто накапливаются?Не уверен, что происходит.
См. Код ниже.У меня есть нить my_thread и кнопка, связанная с функцией stop_thread, описанной ниже.
def stop_thread(self):
prompt=QWidgets.QMessageBox.question(self, 'Stop!', 'Are you sure you want to stop thread?', QtWidgets.QMessageBox.Yes, QtWidgets.QMessageBox.No)
if prompt == QtWidgets.QMessageBox.Yes:
self.my_thread.terminate()
else:
pass
Я ожидаю, что каждый раз, когда я запускаю, а затем останавливаю нить, используя кнопку, появляется одно окно подтвержденияи после выбора «Да» поток будет прерван.На самом деле поток завершается, но я получаю несколько MessageBox-ов, появляющихся один за другим - их количество соответствует тому, сколько раз я запускал поток.