PyQt5弹窗询问,如果确认就退出,如果取消就每间隔10秒再次弹窗询问,直到确认退出
时间: 2024-10-10 16:05:49 浏览: 12
在 PyQt5 中,你可以使用 `QMessageBox` 类来创建弹窗,结合 `QApplication.quit()` 来实现退出功能。为了实现每10秒重新弹窗,你需要使用 `QTimer` 和事件循环。以下是一个简单的示例代码:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMessageBox, QTimer
from PyQt5.QtCore import Qt
def ask_to_quit():
reply = QMessageBox.question(
None,
"Quit Confirmation",
"Do you really want to quit?",
QMessageBox.Yes | QMessageBox.No,
QMessageBox.No
)
if reply == QMessageBox.Yes:
QApplication.quit()
else:
# 如果用户选择取消,则启动定时器
timer = QTimer.singleShot(10000, ask_to_quit)
timer.timeout.connect(ask_to_quit) # 重复调用函数,直到用户确认
if __name__ == "__main__":
app = QApplication(sys.argv)
# 首次询问
ask_to_quit()
# 运行主循环
sys.exit(app.exec_())
```
在这个例子中,我们首先定义了一个函数 `ask_to_quit`,它会显示一个确认对话框。如果用户点击“是”,则应用退出;否则,我们设置一个单击计时器 `QTimer`,当计时器触发(10秒后)时,会再次调用 `ask_to_quit` 函数。