锋哥原创的PyQt6视频教程:
PyQt6中的文件对话框使用QFileDialog类表示,该类继承自QDialog类,它允许用户选择文件或者文件夹,也允许用户遍历文件系统,以便选择一个或多个文件或者文件夹。
QFileDialog类的常用方法:
方法 | 说明 |
---|---|
getOpenFileName() | 获取一个打开文件的文件名 |
getOpenFileNames() | 获取多个打开文件的文件名 |
getSaveFileName() | 获取保存的文件名 |
getExistingDirectory() | 获取一个打开的文件夹 |
setAcceptMode() | 设置接收模式,取值如下。 QFileDialog.AcceptOpen:设置文件对话框为打开模式,这是默认值; OFileDialog.AcceptSave:设置文件对话框为保存模式 |
setDefaultSuffix() | 设置文件对话框中的文件名的默认后缀名 |
setFileMode() | 设置可以选择的文件类型,取值如下。 QFileDialog.FileMode.AnyFile:任意文件(无论文件是否存在)﹔ QFileDialog.FileMode.ExistingFile:已存在的文件; QFileDialog.FileMode.ExistingFiles:已存在的多个文件; QFileDialog.FileMode.Directory:文件夹; QFileDialog.FileMode.DirectoryOnly:文件夹(选择时只能选中文件夹) |
setDirectory() | 设置文件对话框的默认打开位置 |
setNameFilter() | 设置名称过滤器,多个类型的过滤器之间用两个分号分割(例如:所有文件(.);Python文件(.py))﹔而一个过滤器中如果有多种格式,可以用空格分割(例如:图片文件(.jpg .png.bmp)) |
setViewMode() | 设置显示模式,取值如下。 QFileDialog.Detail:显示文件详细信息,包括文件名、大小、日期等信息; QFileDialog.List:以列表形式显示文件名 |
selectedFile() | 获取选择的一个文件或文件夹名字 |
selectedFiles() | 获取选择的多个文件或文件夹名字 |
UI生成代码:
from PyQt6 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(566, 438)
self.pushButton = QtWidgets.QPushButton(parent=Form)
self.pushButton.setGeometry(QtCore.QRect(210, 180, 75, 23))
self.pushButton.setObjectName("pushButton")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.pushButton.setText(_translate("Form", "选择文件"))
Main测试代码:
"""
python加载ui文件
作者 : 小锋老师
官网 : www.python222.com
"""
import sys
from PyQt6.QtWidgets import QApplication, QPushButton, QFileDialog
from PyQt6 import uic
def selectFile():
fd = QFileDialog()
fd.setFileMode(QFileDialog.FileMode.ExistingFiles) # 设置多选
fd.setDirectory('C:\\') # 设置初始化路径
fd.setNameFilter('图片文件(*.jpg *.png *.bmp *.ico *.gif)') # 设置只选择图片文件
if fd.exec(): # 执行
print(fd.selectedFiles())
if __name__ == '__main__':
app = QApplication(sys.argv)
ui = uic.loadUi("./QFileDialog文件对话框控件.ui")
pushButton: QPushButton = ui.pushButton
pushButton.clicked.connect(selectFile)
ui.show()
sys.exit(app.exec())