PySide6 弹窗对话框(一):QMessageBox、QInputDialog

Qt 提供了几个开箱即用的标准对话框,本篇讲其中使用频率最高的两个:QMessageBox(提示与确认)和 QInputDialog(单个值的输入)。
QMessageBox 和 QInputDialog 都属于 Qt 标准模态对话框,继承自 QDialog:调用 exec() 阻塞主窗口,必须用户处理弹窗后才能继续操作主界面;需要传入 parent 父控件,用来控制弹窗居中、窗口归属、跟随父窗口生命周期;适合轻量、单次交互。
QMessageBox
QMessageBox 承担四种交互逻辑,如告知结果、请求确认、警告风险、报告错误,对应的方法如下:
information():告知成功、说明状态,返回值为Ok。question():请求确认,返回值为Yes或No。warning():提示风险、校验失败,返回值为Ok。critical():报告错误、致命异常,返回值为Ok。
| |
演示效果如下:




在 Mac 上,调用
QMessageBox的 4 个静态方法时,图标 Icon 设置无效,只能显示默认图标。
QMessageBox 上的按钮按 QMessageBox.StandardButton 枚举设置,默认按钮为 Ok,多个按钮用 | 运算符组合,如下:
| |
演示效果如下:

QInputDialog
QInputDialog 用来向用户要一个值:一段文字、一个整数、一个浮点数、一个下拉选项,或一段多行文本,同样提供静态方法,调用后返回一个二元组,5 个静态取值方法如下:
getText():获取用户输入的文本getInt():获取用户输入的整数getDouble():获取用户输入的浮点数getItem():获取用户选择的下拉选项getMultiLineText():获取用户输入的多行文本输入
| |
演示效果如下:





静态方法只覆盖常见形态,需要修改标签、开启可编辑下拉框、读取多个值时,用实例化写法:
| |
演示效果如下:

小结
QMessageBox 侧重信息提示与确认抉择,依靠按钮返回结果,适合告知、警告、确认类交互。QInputDialog 用来向用户获取输入数据,各类静态方法统一返回 (value, ok) 元组。使用二者都要判断用户操作结果,区分确认和取消分支,防止误执行业务逻辑。