概述
選取文件夾 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