[PyQt5]文件对话框QFileDialog的使用
概述
选取文件夹 QFileDialog.getExistingDirectory()
选择文件 QFileDialog.getOpenFileName()
选择多个文件 QFileDialog.getOpenFileNames()
选择保存文件 QFileDialog.getSaveFileName()
效果展示
注意事项
1.文件筛选参数设置
在 QFileDialog.getOpenFileName()、 QFileDialog.getOpenFileNames()、 QFileDialog.getSaveFileName() 中有一个设置文件扩展名过滤的参数[具体见源代码中注释]。其中设置文件扩展名过滤,用双分号间隔。eg : "All Files (*);;PDF Files (*.pdf);;Text Files (*.txt)
2.返回值filetype
在 QFileDialog.getOpenFileName()、 QFileDialog.getOpenFileNames()、 QFileDialog.getSaveFileName() 有两个返回值,直接查询QT文档,发现QT中只有一个QString类型的返回值,经过测验,这个返回值是你选择的文件筛选的选项,见下图:
源代码
import sys
import os
from PyQt5.QtWidgets import *
class MainForm(QWidget):
def __init__(self, name = 'MainForm'):
super(MainForm,self).__init__()
self.setWindowTitle(name)
self.cwd = os.getcwd() # 获取当前程序文件位置
self.resize(300,200) # 设置窗体大小
# btn 1
self.btn_chooseDir = QPushButton(self)
self.btn_chooseDir.setObjectName("btn_chooseDir")
self.btn_chooseDir.setText("选择文件夹")
# btn 2
self.btn_chooseFile = QPushButton(self)
self.btn_chooseFile.setObjectName("btn_chooseFile")
self.btn_chooseFile.setText("选取文件")
# btn 3
self.btn_chooseMutiFile = QPushButton(self)
self.btn_chooseMutiFile.setObjectName("btn_chooseMutiFile")
self.btn_chooseMutiFile.setText("多文件选择")
# btn 4
self.btn_saveFile = QPushButton(self)
self.btn_saveFile.setObjectName("btn_saveFile")
self.btn_saveFile.setText("文件保存")
# 设置布局
layout = QVBoxLayout()
layout.addWidget(self.btn_chooseDir)
layout.addWidget(self.btn_chooseFile)
layout.addWidget(self.btn_chooseMutiFile)
layout.addWidget(self.btn_saveFile)
self.setLayout(layout)
# 设置信号
self.btn_chooseDir.clicked.connect(self.slot_btn_chooseDir)
self.btn_chooseFile.clicked.connect(self.slot_btn_chooseFile)
self.btn_chooseMutiFile.clicked.connect(self.slot_btn_chooseMutiFile)
self.btn_saveFile.clicked.connect(self.slot_btn_saveFile)
def slot_btn_chooseDir(self):
dir_choose = QFileDialog.getExistingDirectory(self,
"选取文件夹",
self.cwd) # 起始路径
if dir_choose == "":
print("\n取消选择")
return
print("\n你选择的文件夹为:")
print(dir_choose)
def slot_btn_chooseFile(self):
fileName_choose, filetype = QFileDialog.getOpenFileName(self,
"选取文件",
self.cwd, # 起始路径
"All Files (*);;Text Files (*.txt)") # 设置文件扩展名过滤,用双分号间隔
if fileName_choose == "":
print("\n取消选择")
return
print("\n你选择的文件为:")
print(fileName_choose)
print("文件筛选器类型: ",filetype)
def slot_btn_chooseMutiFile(self):
files, filetype = QFileDialog.getOpenFileNames(self,
"多文件选择",
self.cwd, # 起始路径
"All Files (*);;PDF Files (*.pdf);;Text Files (*.txt)")
if len(files) == 0:
print("\n取消选择")
return
print("\n你选择的文件为:")
for file in files:
print(file)
print("文件筛选器类型: ",filetype)
def slot_btn_saveFile(self):
fileName_choose, filetype = QFileDialog.getSaveFileName(self,
"文件保存",
self.cwd, # 起始路径
"All Files (*);;Text Files (*.txt)")
if fileName_choose == "":
print("\n取消选择")
return
print("\n你选择要保存的文件为:")
print(fileName_choose)
print("文件筛选器类型: ",filetype)
if __name__=="__main__":
app = QApplication(sys.argv)
mainForm = MainForm('测试QFileDialog')
mainForm.show()
sys.exit(app.exec_())
原文链接:https://blog.csdn.net/humanking7/java/article/details/80546728
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】