QMessageBox在选择后不会自行销毁?

问题描述 投票:0回答:1

我有一个正在运行的线程和一个'stop thread'按钮,当点击它时调用一个调用线程的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 - 它们的数量对应于我启动线程的次数。

python python-3.x pyqt pyqt5 qthread
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.