用PyQt5实现弹窗询问,如果确认就退出,如果取消就每间隔10秒再次弹窗询问,直到确认退出
时间: 2024-10-10 14:05:46 浏览: 33
Python3使用PyQt5制作简单的画板/手写板实例
要使用PyQt5实现这样的功能,你可以使用`QMessageBox`类来创建弹窗对话框,然后结合`QTimer`定时器来实现循环询问。以下是一个简单的示例:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMessageBox, QTimer
from PyQt5.QtCore import Qt
def confirm_exit():
reply = QMessageBox.question(None, "Exit Confirmation", "Are you sure you want to exit?",
QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
app.quit()
else:
# 如果用户点击了No,启动计时器,每隔10秒重新询问
timer = QTimer.singleShot(10000, confirm_exit) # 单击事件后延迟10秒执行
timer.setInterval(10000) # 设置每次重复的时间为10秒
timer.timeout.connect(confirm_exit) # 定义计时器超时时触发的函数
if __name__ == "__main__":
app = QApplication(sys.argv)
confirm_exit() # 首次弹窗询问
sys.exit(app.exec_())
```
在这个例子中,我们首先定义了一个`confirm_exit`函数,用于显示对话框并处理用户的响应。如果用户选择Yes(即确认),则调用`app.quit()`关闭应用程序。如果用户选择No(即取消),我们就使用`QTimer`来设置一个10秒后重新触发相同函数的单击事件。
阅读全文