pyqt6实现关闭窗口前弹出确认框的示例代码

 更新时间:2024年02月19日 11:41:48   作者:老狼IT工作室  
本文主要介绍了pyqt6实现关闭窗口前弹出确认框的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

功能描述

关闭右上角的关闭(×)按钮时,弹出确认框,选择“是(Yes)”则直接退出窗口,选择“(否)No”则忽视当前操作,保留窗口处于激活状态。

知识点

QMessageBox.question方法

QMessageBox.question() 方法是 PyQt 中用于显示一个带有确定和取消按钮的对话框,并等待用户点击其中一个按钮后返回结果的方法。

函数原型:

QMessageBox.question(parent: Optional[QWidget], 
	title: Optional[str], 
	text: Optional[str], 
	buttons: QMessageBox.StandardButton = QMessageBox.StandardButtons(QMessageBox.Yes|QMessageBox.No), 
	defaultButton: QMessageBox.StandardButton = QMessageBox.NoButton) 
-> QMessageBox.StandardButton

参数说明:

  • parent:父窗口对象,即该对话框的父级窗口。如果为 None,则对话框没有父级窗口。
  • title:对话框的标题。
  • text:对话框中要显示的文本内容。
  • buttons:对话框中要显示的按钮类型,可以是以下值的组合:
    • Yes和No
    • Yes和Cancel
  • defaultButton:对话框中默认选中的按钮(来自buttons之一)

返回值为选中的按钮(来自buttons之一)

class StandardButton(enum.IntFlag):
    NoButton = ... # type: QMessageBox.StandardButton
    Ok = ... # type: QMessageBox.StandardButton
    Save = ... # type: QMessageBox.StandardButton
    SaveAll = ... # type: QMessageBox.StandardButton
    Open = ... # type: QMessageBox.StandardButton
    Yes = ... # type: QMessageBox.StandardButton
    YesToAll = ... # type: QMessageBox.StandardButton
    No = ... # type: QMessageBox.StandardButton
    NoToAll = ... # type: QMessageBox.StandardButton
    Abort = ... # type: QMessageBox.StandardButton
    Retry = ... # type: QMessageBox.StandardButton
    Ignore = ... # type: QMessageBox.StandardButton
    Close = ... # type: QMessageBox.StandardButton
    Cancel = ... # type: QMessageBox.StandardButton
    Discard = ... # type: QMessageBox.StandardButton
    Help = ... # type: QMessageBox.StandardButton
    Apply = ... # type: QMessageBox.StandardButton
    Reset = ... # type: QMessageBox.StandardButton
    RestoreDefaults = ... # type: QMessageBox.StandardButton
    FirstButton = ... # type: QMessageBox.StandardButton
    LastButton = ... # type: QMessageBox.StandardButton
    YesAll = ... # type: QMessageBox.StandardButton
    NoAll = ... # type: QMessageBox.StandardButton
    Default = ... # type: QMessageBox.StandardButton
    Escape = ... # type: QMessageBox.StandardButton
    FlagMask = ... # type: QMessageBox.StandardButton
    ButtonMask = ... # type: QMessageBox.StandardButton

QWidget.closeEvent方法

QWidget.closeEvent() 是一个在窗口关闭时自动调用的函数,用于处理窗口关闭事件。当用户点击窗口的关闭按钮或使用操作系统提供的快捷键来关闭窗口时,该函数就会被触发。

函数原型如下:

def closeEvent(self, event):
    """
    处理窗口关闭事件。

    参数:
        event (QCloseEvent) -- 关闭事件对象,包含了与关闭事件相关的信息。

    返回值:
        无返回值。如果需要阻止窗口关闭,可以返回 True;否则返回 False。
    """

在 closeEvent() 函数中,我们可以编写自定义的代码来处理窗口关闭事件。例如,我们可以在函数中弹出一个确认对话框,询问用户是否真的要关闭窗口。如果用户选择“是”,则允许窗口关闭;如果用户选择“否”,则取消关闭操作。

实现代码

import sys

from PyQt6.QtGui import QCloseEvent
from PyQt6.QtWidgets import QApplication, QWidget, QMessageBox


class ConfirmQuitWindow(QWidget):
    def __init__(self, is_confirm_quit: bool = True):
        super(ConfirmQuitWindow, self).__init__()
        self.is_confirm_quit = is_confirm_quit
        self.setGeometry(0, 0, 500, 300)
        self.setWindowTitle('提示是否关闭窗口测试')

    def closeEvent(self, event: QCloseEvent) -> None:
        if self.is_confirm_quit:
            reply = QMessageBox.question(self, '关闭窗口', '确定退出吗?',
                                         QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No,
                                         QMessageBox.StandardButton.No)
            if reply == QMessageBox.StandardButton.Yes:
                event.accept()
            else:
                event.ignore()
        else:
            event.accept()


app = QApplication(sys.argv)

window = ConfirmQuitWindow(is_confirm_quit=True)
window.show()

sys.exit(app.exec())

 运行效果

点击右上角关闭(x)按钮:

如果选择 No,窗口不关闭。如果选择 “Yes”,则窗口关闭。

到此这篇关于pyqt6实现关闭窗口前弹出确认框的示例代码的文章就介绍到这了,更多相关pyqt6  弹出确认框内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

您可能感兴趣的文章:

相关文章

  • Python永久配置国内镜像源安装再也不用担心卡顿

    Python永久配置国内镜像源安装再也不用担心卡顿

    这篇文章主要为大家介绍了Python如何永久配置国内镜像源,从此安装再也不用担心卡顿,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-10-10
  • Pytorch使用CUDA流(CUDA?stream)的实现

    Pytorch使用CUDA流(CUDA?stream)的实现

    本文主要介绍了Pytorch使用CUDA流(CUDA?stream)的实现,CUDA流是在GPU上并行执行操作的一种机制,通过使用CUDA流,可以将不同的操作分配给不同的流,在不同的流上并行执行这些操作,从而提高代码的性能
    2023-12-12
  • Python中atexit模块的基本使用示例

    Python中atexit模块的基本使用示例

    这篇文章主要介绍了Python中atexit模块的基本使用示例,示例代码基于Python2.x版本,注意其和Python3的兼容性,需要的朋友可以参考下
    2015-07-07
  • opencv转换颜色空间更改图片背景

    opencv转换颜色空间更改图片背景

    这篇文章主要为大家详细介绍了opencv转换颜色空间更改图片背景,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Python获取运行目录与当前脚本目录的方法

    Python获取运行目录与当前脚本目录的方法

    这篇文章主要介绍了Python获取运行目录与当前脚本目录的方法,涉及Python目录操作与系统相关变量的获取技巧,需要的朋友可以参考下
    2015-06-06
  • Pytorch教程内置模型源码实现

    Pytorch教程内置模型源码实现

    本文是关于Pytorch教程文章,本篇主要为教大家Pytorch内置模型源码实现,有需要的朋友可以借鉴参考下,希望可以有所帮助,祝大家多多进步,早日升职加薪
    2021-09-09
  • Python 数据处理更容易的12个辅助函数总结

    Python 数据处理更容易的12个辅助函数总结

    Python的产生似乎就是专门用来处理数据的,顺理成章的成为大数据的主流语言,本文介绍十二个函数辅助你更容易更便捷的用Python进行数据处理
    2021-11-11
  • python中的空值判断和空字符串判断方式

    python中的空值判断和空字符串判断方式

    这篇文章主要介绍了python中的空值判断和空字符串判断方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • jupyter notebook如何使用matlab

    jupyter notebook如何使用matlab

    这篇文章主要介绍了jupyter notebook如何使用matlab问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • Python模拟脉冲星伪信号频率实例代码

    Python模拟脉冲星伪信号频率实例代码

    这篇文章主要介绍了Python模拟脉冲星伪信号频率实例代码,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01

最新评论

?


http://www.vxiaotou.com