PyQt5弹窗询问,确认就关闭,取消就10秒后再次弹窗询问,直到确认退出
时间: 2024-10-10 11:05:41 浏览: 42
pyqt5线程与弹窗示例
在PyQt5中,你可以使用QMessageBox(消息框)来实现这个需求。首先,你需要创建一个循环,以便重复询问用户直到他们选择确认。以下是一个简单的示例代码:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMessageBox
def confirm_exit():
reply = QMessageBox.question(None, 'Exit Confirmation', 'Are you sure you want to exit?', QMessageBox.Yes | QMessageBox.No)
if reply == QMessageBox.Yes:
# 用户确认,关闭窗口并退出程序
return True
else:
# 用户取消或选择No,设置一个倒计时10秒后再次询问
from threading import Timer
timer = Timer(10.0, confirm_exit)
timer.start()
return False
# 主程序入口
if __name__ == '__main__':
app = QApplication(sys.argv)
while not confirm_exit():
pass
# 如果用户最终选择了Yes,程序正常退出
sys.exit(app.exec_())
```
在这个例子中,`question()`函数用于显示一个带有“确定”和“取消”按钮的消息对话框。如果用户点击“确定”,返回值为`QMessageBox.Yes`,我们直接返回True退出循环;如果点击“取消”或者选择No,则启动一个定时器,在10秒后再次调用`confirm_exit()`函数。
阅读全文