Python个人学习笔记 PyQt5——对话框
对话框
内置对话框
自定义对话框
文件对话框
选择文件
选择文件夹
选择文件链接
选择保存路径/链接
输入对话框
单行文本框 / 多行文本框
整数数字选择 / 小数数字选择
下拉组合框
字体对话框 / 颜色对话框

对话框
(QtWidgets.)QMessageBox类
内置对话框与按钮
内置的对话框类型
⑴ 消息对话框:QMessageBox.information()
⑵ 问答对话框:QMessageBox.question()
⑶ 警告对话框:QMessageBox.warning()
⑷ 错误对话框:QMessageBox.critical()
⑸ 关于对话框:QMessageBox.about()
⑴~⑷的参数都为 (parent ,title ,text ,buttons ,defaultbutton)
parent:对话框所属窗口。
title:对话框标题。
text:对话框文本。
buttons:对话框的按钮。默认为一个OK按钮。
defaultbutton:默认选中按钮。若未指定,则默认为第一个按钮。
关于对话框的参数为 (parent ,caption ,text)
parent:所属窗口。
caption:标题。
text:文本。
按钮类型
⑴ 确认:QMessageBox.Ok
⑵ 确认:QMessageBox.Yes
⑶ 取消:QMessageBox.No
⑷ 中止:QMessageBox.Abort
⑸ 重试:QMessageBox.Retry
⑹ 忽略:QMessageBox.Ignore
⑺ 关闭:QMessageBox.Close
⑻ 取消:QMessageBox.Cancel
⑼ 打开:QMessageBox.Open
⑽ 保存:QMessageBox.Save
在一个对话框中添加多个按钮时,用 | 或运算符连接。
未进行连接动作(函数)时,这些按钮都不具有任何功能,只是标识符不同,在代码中用于识别按钮的选择。比如完全可以让QMessageBox.No连接打开文件的功能,而让QMessageBox.Open连接关闭窗口功能。
点击按钮后,QMessageBox会返回一个按钮类型的值,可用于判断执行相应操作。

自定义对话框与按钮
内置的对话框的可添加按钮的类型是固定的。需要自定义对话框才能添加自定义按钮。
自定义按钮类型
自定义按钮需要指定按钮的种类。
⑴ QMessageBox.AcceptRole
表示用户接受某个操作、确认或同意某个选项的意图。通常对应于用户单击对话框中的 "确定" 或 "是" 按钮。
⑵ QMessageBox.RejectRole
表示用户拒绝某个操作或取消某个选项的意图。通常对应于用户单击对话框中的 "取消" 或 "否" 按钮。
⑶ QMessageBox.YesRole
表示用户选择 "是" 的意图。通常对应于用户单击对话框中的 "是" 按钮。
⑷ QMessageBox.NoRole
表示用户选择 "否" 的意图。通常对应于用户单击对话框中的 "否" 按钮。
⑸ QMessageBox.DestructiveRole
表示用户执行具有破坏性或危险性的操作的意图。通常对应于用户单击对话框中的 "删除" 或 "危险" 按钮。
⑹ QMessageBox.HelpRole
表示用户请求帮助或获取更多信息的意图。通常对应于用户单击对话框中的 "帮助" 按钮。

区分多个同类型按钮

文件对话框
(QtWidgets.)QFileDialog类
选择文件
QFileDialog.getOpenFileName() / QFileDialog.getOpenFileNames()
选择单个/多个文件。
返回 文件路径/文件路径列表 和所用到的过滤器。
参数
parent:指定父级窗口,用于将文件选择对话框作为其子窗口显示。默认为 None。
caption:指定文件选择对话框的标题。默认为一个空字符串。
directory:指定对话框打开时显示的目录路径。默认为当前工作目录。
filter:指定文件过滤器,用于限制用户可以选择的文件类型。默认为空字符串,表示不使用任何过滤器。
initialFilter:指定初始的文件过滤器,用于在对话框中设置默认的过滤器选项。默认为空字符串。
过滤器filter
在括号中写入指定的文件格式,多个格式用空格分开。括号前可以写提示,也可以不写。
多个过滤器用双分号隔开。

例:选择图片,将路径加到视图,单击可预览图片。


选择文件夹
QFileDialog.getExistingDirectory()
返回文件夹路径。
参数
parent:指定父级窗口,用于将目录选择对话框作为其子窗口显示。默认为 None。
caption:指定目录选择对话框的标题。默认为一个空字符串。
directory:指定对话框打开时显示的目录路径。默认为当前工作目录。
options:指定对话框的选项。可以使用 QFileDialog.Options 中的标志进行组合。默认为 0,即无特殊选项。


选择文件链接
QFileDialog.getOpenFileUrl() / QFileDialog.getOpenFileUrls()
选择单个/多个文件链接。
返回 文件链接/文件链接列表 和一个过滤器。
参数与 QFileDialog.getOpenFileName() 相同。
toLocalFile()
将链接转化为路径。
QtGui.QDesktopServices.openUrl()
直接打开链接。也可以直接打开网页链接。

选择保存路径/链接
QFileDialog.getSaveFileName() / QFileDialog.getSaveFileUrl()
参数与 QFileDialog.getOpenFileName() 相同。

输入对话框
(QtWidgets.)QInputDialog类。
单行文本框 / 多行文本框
QInputDialog.getText() / QInputDialog.getMultiLineText()
返回值是一个元组 (text, ok_pressed)。
text为输入的内容。ok_pressed为一个布尔值,True表示点击了确认,False表示点击了取消或者关闭。
参数:
parent:所属窗口。
title:标题。
label:文本。
echo:文本框内容显示方式。
text:默认显示内容。
flags:窗口标志。可参考PyQt5——窗口。
多行文本框少一个echo参数。
echo参数的显示方式:
QtWidgets.QLineEdit.Normal:默认的回显模式,以明文方式显示文本。
QtWidgets.QLineEdit.NoEcho:不回显文本,用于输入敏感信息。
QtWidgets.QLineEdit.Password:以密码模式回显文本,用于输入密码,字符将被显示为掩码字符。


整数数字选择 / 小数数字选择
QInputDialog.getInt() / QInputDialog.getDouble()
返回值是一个元组 (value, ok_pressed)。
参数:
parent:所属窗口。
title:标题。
label:文本。
value:默认值。
min:最小值。
max:最大值。
step(整数数字选择):点击箭头改变的值的大小。decimals(小数数字选择):精度。
flags:窗口标志。


下拉组合框
QInputDialog.getItem()
返回值是一个元组 (text, ok_pressed)。
参数:
parent:所属窗口。
title:标题。
label:文本。
items:选项列表。元素必须为字符串类型。
current:默认选项。为一个整数,表示选项的索引。
editable:是否可被编辑。
flags:窗口标志。


字体对话框
QtWidgets.QFontDialog.getFont()
返回值是一个元组 (font, ok_pressed)。
font为QFont对象。
可用 setFont() 设置字体。
颜色对话框
QtWidgets.QColorDialog.getColor()
返回一个QColor对象。
可用 setStyleSheet(f'color:{color.name()};') 设置字体颜色。
