PyQt5 标准输入对话框(QInputDialog)、打开文件对话框(QFileDialog)、颜色对话框(QColorDialog)、字体对话框(QFontDialog)
一、标准输入对话框
-
QInputDialog 输入对话框 只让用户输入一行数据信息,比如 姓名、年龄等,可以方便的用来获取简单的信息
-
QInputDialog常用的五种使用方法:
| 方法 | 描述 |
|---|---|
| getText | 弹出对话框,让用户输入 单行文本 |
| getMultiLineText | 弹出对话框,让用户输入 多行文本 |
| getInt | 弹出对话框,让用户输入 整数(int) |
| getDouble | 弹出对话框,让用户输入 浮点数(float) |
| getItem | 弹出对话框,让用户选择 选项 |
- 小案例
from PyQt5.Qt import *
app = QApplication([])
window = QWidget()
window.resize(300, 180)
window.move(300, 300)
def showName():
name, ok = QInputDialog.getText(window, "修改姓名", '请输入姓名')
if ok:
lb3.setText(name)
def showAge():
age, ok = QInputDialog.getInt(window, "修改年龄", "请输入年龄", min=1, max=100)
if ok:
lb4.setText(str(age))
lb1 = QLabel('姓名:', window)
lb1.resize(50, 40)
lb1.move(50, 20)
lb2 = QLabel("年龄:", window)
lb2.resize(50, 40)
lb2.move(50, 70)
lb3 = QLabel("张三", window)
lb3.resize(50, 40)
lb3.move(100, 20)
lb4 = QLabel("18", window)
lb4.resize(50, 40)
lb4.move(100, 70)
btn1 = QPushButton("修改姓名", window)
btn1.move(180, 30)
btn2 = QPushButton("修改年龄", window)
btn2.move(180, 80)
btn1.clicked.connect(showName)
btn2.clicked.connect(showAge)
window.show()
app.exec_()

二、打开文件对话框(选择文件框)
-
QFileDialog 类可以用来选择文件或者目录
-
QFileDialog 常用的方法
| 方法 | 说明 |
|---|---|
| getExistingDirectory | 选择目录 该方法,第一个参数是父窗口对象,第二个参数是选择框显示的标题 返回值即为选择的路径字符串,例如:G:/MaxServer 如果用户点击了 选择框的 取消选择按钮,返回 空字符串 |
| getOpenFileName | 选择单个文件 该方法返回值是一个元组,第一个元素是选择的文件路径,第二个元素是文件类型; 例如:('E:/Pictures/puke/puke1.png', 'Images(*.jpg; *.png)') 如果用户点击了 选择框的 取消选择按钮,返回 空字符串 |
| getOpenFileNames | 选择多个文件 该方法返回值是一个 元组,第一个元素是一个列表,里面包含了选择的文件路径,第二个元素是文件类型; 例如:(['E:/Pictures/puke/puke1.png', 'E:/Pictures/puke/puke2.png', 'E:/Pictures/puke/puke3.png'], 'Images(*.jpg; *.png)') 如果用户点击了 选择框的 取消选择按钮,返回 空列表 |
| getSaveFileName | 保存文件 该方法返回值是一个元组,通过选择路径和文件名,来保存一个文件,第一个元素是保存文件名的文件路径,第二个是文件类型; 例如:('E:/Pictures/puke/puk20.jpg', 'Images(*.jpg; *.png)') 如果用户点击了 选择框的 取消选择按钮,返回 空字符串 |
- 选择目录
- 通过 getExistingDirectory 静态方法 选择目录,该方法,第一个参数是父窗口对象,第二个参数是选择框显示的标题
from PyQt5.QtWidgets import QFileDialog
filepath = QFileDialog.getExistingDirectory(window, "选择目录")
-
返回值即为选择的路径字符串;如果用户点击了 选择框的 取消选择按钮,返回 空字符串
-
小案例
from PyQt5.Qt import *
from PyQt5.QtWidgets import QFileDialog
app = QApplication([])
window = QWidget()
window.resize(300, 200)
window.move(300, 300)
def display():
filepath = QFileDialog.getExistingDirectory(window, "选择目录")
label.setText(filepath)
label = QLabel(window)
label.resize(200, 25)
label.move(10, 30)
btn = QPushButton(window)
btn.setText("选择")
btn.move(10, 80)
btn.clicked.connect(display)
window.show()
app.exec_()

- 选择单个文件
- 如果你想弹出文件选择框,选择一个 已经存在 的文件,可以使用 QFileDialog 静态方法 getOpenFileName
from PyQt5.QtWidgets import QFileDialog
filepath, filetype = QFileDialog.getOpenFileName(
window, # 父窗口对象
"选择文件", # 窗口标题
r"G:\\", # 自定义起始目录
"文件类型(*.txt;*.pdf);;文件类型(*.json);;文件类型(*.py;*.pyw)" # 选择类型过滤,过滤内容再括号中,如果要有多个过滤器的话,可以用 ;; 分割
)
- 小案例
from PyQt5.Qt import *
from PyQt5.QtWidgets import QFileDialog
app = QApplication([])
window = QWidget()
window.resize(300, 200)
window.move(300, 300)
def display():
filepath, filetype = QFileDialog.getOpenFileName(
window, # 父窗口对象
"选择文件", # 窗口标题
r"G:\\", # 自定义起始目录
"文件类型(*.txt;*.pdf)" # 选择类型过滤,过滤内容再括号中
)
label.setText(filepath)
label = QLabel(window)
label.resize(200, 25)
label.move(10, 30)
btn = QPushButton(window)
btn.setText("选择")
btn.move(10, 80)
btn.clicked.connect(display)
window.show()
app.exec_()

- 保存文件
- 弹出文件选择框,选择路径和文件名,来 保存一个文件,通过 getSaveFileName
from PyQt5.QtWidgets import QFileDialog
filepath, filetype = QFileDialog.getSaveFileName(
window, # 父窗口对象
"保存文件", # 窗口标题
r"G:\\", # 自定义起始目录
"All Files (*);;Text Files (*.txt)" # 选择类型过滤,过滤内容再括号中,如果要有多个过滤器的话,可以用 ;; 分割
)
- 小案例
from PyQt5.QtWidgets import QFileDialog
app = QApplication([])
window = QWidget()
window.resize(300, 500)
window.move(300, 300)
def display():
filepath, filetype = QFileDialog.getSaveFileName(
window, # 父窗口对象
"保存文件", # 窗口标题
r"G:\\", # 自定义起始目录
"All Files (*);;Text Files (*.txt)" # 选择类型过滤,过滤内容再括号中,如果要有多个过滤器的话,可以用 ;; 分割
)
label.setText(filepath)
if filepath:
with open(filepath, "w", encoding='utf-8') as f:
f.write(text.toPlainText())
else:
label.setText("您没有选择保存的文件")
label = QLabel(window)
label.resize(200, 25)
label.move(10, 30)
btn = QPushButton(window)
btn.setText("保存")
btn.move(10, 80)
btn.clicked.connect(display)
text = QPlainTextEdit(window)
text.move(10, 200)
window.show()
app.exec_()

- 选择多个文件
- 选择多个文件,使用 getOpenFileNames 静态方法
from PyQt5.QtWidgets import QFileDialog
filepaths, filetype = QFileDialog.getOpenFileNames(
window,
"上传图片",
r"G:\\",
"Images(*.jpg;*.png)"
)
- 小案例
from PyQt5.QtWidgets import QFileDialog
app = QApplication([])
window = QWidget()
window.resize(300, 500)
window.move(300, 300)
def openfiles():
filepaths, filetype = QFileDialog.getOpenFileNames(
window,
"保存图片",
r"G:\\",
"Images(*.jpg;*.png)"
)
for file in filepaths:
text.appendPlainText(file)
btn = QPushButton(window)
btn.setText("保存")
btn.move(10, 80)
btn.clicked.connect(openfiles)
text = QPlainTextEdit(window)
text.move(10, 200)
window.show()
app.exec_()

三、颜色对话框(QColorDialog)
-
颜色对话框只要用于调度颜色选择面板,进行选择颜色
-
主要用的是 QColorDialog 类
-
颜色对话框取得颜色值是十六进制。
color = QColorDialog.getColor()
color.name() # 此值就是颜色值的十六进制
color.isValid() # 如果用户选中 OK 按钮,则返回True;反之返回 False
四、字体对话框
-
字体对话框主要是针对调用字体选择框对字体进行修改
-
主要是用 QFontDialog 类
-
简单用法
font, ok = QFontDialog.getFont()
- getFont(parent: QWidget = None) -> Tuple[QFont, bool]
- getFont 返回值是一个元组,第一个元素是 QFont 对象(字体名称);第二个元素是布尔值,如果用户点击 Ok,则返回True,否则返回False
- setFont()设置字体
font = QFont("微软雅黑", 9)
self.label.setFont(font)
综合小案例
from PyQt5.Qt import *
import sys
class Example:
def InitUi(self, Form):
self.Ui = Form
self.Ui.resize(500, 400)
self.textedit = QTextEdit(self.Ui)
self.textedit.resize(360, 350)
self.textedit.move(10, 20)
self.btn1 = QPushButton(self.Ui)
self.btn1.setText("打开文件")
self.btn1.move(380, 20)
self.btn1.clicked.connect(self.openfile)
self.btn2 = QPushButton(self.Ui)
self.btn2.setText("选择字体")
self.btn2.move(380, 80)
self.btn2.clicked.connect(self.choice_font)
self.btn3 = QPushButton(self.Ui)
self.btn3.setText('选择颜色')
self.btn3.move(380, 140)
self.btn3.clicked.connect(self.choice_color)
self.btn4 = QPushButton(self.Ui)
self.btn4.setText('保存文件')
self.btn4.move(380, 200)
self.btn4.clicked.connect(self.savefile)
def openfile(self):
filepath, _ = QFileDialog.getOpenFileName(self.Ui,
'选择文件',
'./',
'文件(*.txt;*.pdf)',
)
if filepath:
with open(filepath, 'r') as f:
self.textedit.clear()
self.textedit.setText(f.read())
def choice_font(self):
font, ok = QFontDialog.getFont()
if ok:
self.textedit.setCurrentFont(font)
def choice_color(self):
color = QColorDialog.getColor()
if color.isValid(): # Valid :有效的
self.textedit.setTextColor(color)
def savefile(self):
filepath, _ = QFileDialog.getSaveFileName(self.Ui,
'选择路径',
'./',
'文件类型(*.txt;*.pdf;*.csv)',
)
if filepath:
with open(filepath, 'a') as f:
f.write(self.textedit.toPlainText())
if __name__ == '__main__':
app = QApplication(sys.argv)
window = QWidget()
ui = Example()
ui.InitUi(window)
window.show()
sys.exit(app.exec_())

浙公网安备 33010602011771号