操作系统:Windows 10专业版
品牌型号:联想拯救者R7000
软件版本:PyQt 5.15.11
我们在使用PyQt做GUI开发时,可能需要监听窗口关闭事件,防止用户未保存数据,导致数据丢失。或者关闭时通过消息框传递信息给用户,提示用户未保存,是否确认关闭,这两个功能是每个程序员都需要掌握的技术。本文将为大家介绍PyQt如何设置窗口关闭事件 PyQt如何显示消息框的相关内容。
一、PyQt如何设置窗口关闭事件
在开发GUI程序时,经常需要监听窗口关闭事件,默认情况下,会直接关闭窗口,无论数据是否保存、操作是否完成。如果开发了需要保存的程序,例如记事本,就需要在关闭前添加确认提示,或者直接保存,所以就需要设置窗口关闭事件。下面我就为大家介绍一下PyQt设置窗口关闭事件的方式。
1、创建主窗口类并继承QMainWindow
导入相关包后,首先需要自定义主窗口类,继承PyQt的QMainWindow,在类中重写closeEvent方法,这个方法是PyQt中【窗口关闭】事件的方法,关闭窗口时,会自动调用该方法。

2、重写closeEvent方法实现自定义逻辑
在closeEvent方法中,我们就可以编写关闭窗口时的操作,关闭窗口时会触发执行该方法,一般是弹出确认提示框,让用户决定是否关闭。这里有一个知识点,closeEvent方法接收一个event参数,该参数用来控制窗口是否真正关闭,【event.accept()】表示允许关闭,【event.ignore()】表示不关闭,说明用户点击了取消。

二、PyQt如何显示消息框
消息框是PyQt中的重要组件,可以用于提示、警告、错误,或者征求用户的确认、取消等,例如上文介绍的关闭窗口弹窗,提示用户是否确认,就是消息的其中之一使用场景,还可以用于提示用户,是否表单有空字段,危险操作之前警告用户数据不可恢复等,下面我就为大家介绍一下PyQt显示消息框的步骤。
1、使用QMessageBox的静态方法
QMessageBox提供了多个静态方法,对应不同类型的消息框,例如下图所示,支持【information()】信息提示框、【warning()】警告框、【critical()】错误提示框等。可以直接调用这些静态方法,只需要传入父窗口、标题、消息内容等参数,即可显示消息框。

2、手动创建QMessageBox实例并自定义配置
如果需要更加丰富的消息框,我们可以手动实例化QMessageBox对象,然后设置消息框的图标、标题、消息内容,还可以添加按钮。例如下图所示,通过【setIcon()】设置消息框图标,通过【setStandardButtons()】设置多个按钮,通过【setDetailedText()】展示详情,可满足各类复杂交互场景需求。

3、设置消息框的显示模式
消息框的显示模式有两种,分为模态与非模态,模态消息框简单来说就是会阻塞主窗口的操作,必须关闭消息框后才能继续操作GUI,如果是重要提示,就使用这种模式。非模态消息框,是通过show()方法显示,需设置setModal(False),不会阻塞主窗口。

三、总结
以上就是PyQt如何设置窗口关闭事件 PyQt如何显示消息框的相关内容。如果要监听窗口的关闭事件,从而介入窗口关闭后的操作,例如:自动保存、日志记录等,可以参考上文重写closeEvent方法。PyQt支持多种显示消息框,本文为大家介绍了这些显示框的显示方式,覆盖不同场景,希望对你有所帮助。