1. 程式人生 > 其它 >Python-PyQt5-圖形視覺化介面(5)--開啟檔案或資料夾--QFileDialog

Python-PyQt5-圖形視覺化介面(5)--開啟檔案或資料夾--QFileDialog

轉載至:https://www.jianshu.com/p/98e8218b2309

QFileDialog是一個開啟檔案或者資料夾選擇對話方塊。
類似於我們平時上傳檔案選擇檔案的介面

開啟檔案有以下3種:
1、單個檔案開啟 QFileDialog.getOpenFileName()
2、多個檔案開啟 QFileDialog.getOpenFileNames()
3、開啟資料夾 QFileDialog.getExistingDirectory()
QFileDialog::getOpenFileName (QWidget * parent = 0,
const QString & caption = QString(),  
const QString 
& dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0 )
  • parent,用於指定父元件。注意,很多Qt元件的建構函式都會有這麼一個parent引數,並提供一個預設值0;在一般成員函式中寫作this,但是要記住如果是在main函式中一定要寫NULL。
  • caption,是對話方塊的標題。
  • ​dir,是對話方塊顯示時預設開啟的目錄。"." 代表程式執行目錄,"/" 代表當前碟符的根目錄。如果不明確選擇,只需要返回絕對路徑也可以這樣寫。​ QDir dir;dir.absolutePath()。這個引數是最不好理解的。
  • ​filter,是對話方塊的字尾名過濾器。如果顯示該目錄下的全部檔案可以“.”需要什麼自己修改後面的*。
  • selectedFilter,是預設選擇的過濾器。
  • options,是對話方塊的一些引數設定,比如只顯示資料夾等等,它的取值是enum QFileDialog::Option,每個選項可以使用 | 運算組合起來。

通常來說,QFileDialog需要繫結到一個button元件上面
其實QFileDialog就是一個事件,需要button來觸發。
from PyQt5 import QtCore, QtGui, QtWidgets, Qt
from PyQt5.QtWidgets import
* from PyQt5.QtCore import * class Ui_MainWindow(QtWidgets.QMainWindow): def __init__(self): super(Ui_MainWindow,self).__init__() self.setupUi(self) self.retranslateUi(self) def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(386, 127) self.centralWidget = QtWidgets.QWidget(MainWindow) self.centralWidget.setObjectName("centralWidget") self.retranslateUi(MainWindow) self.pushButton = QtWidgets.QPushButton(self.centralWidget) self.pushButton.setGeometry(QtCore.QRect(190, 90, 75, 23)) self.pushButton.setObjectName("pushButton") self.pushButton.setText("開啟") MainWindow.setCentralWidget(self.centralWidget) QtCore.QMetaObject.connectSlotsByName(MainWindow) self.pushButton.clicked.connect(self.openfile) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "一顆資料小白菜")) def openfile(self): openfile_name = QFileDialog.getOpenFileName(self,'選擇檔案','','Excel files(*.xlsx , *.xls)') if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())

注意:QFileDialog.getOpenFileName(self,'選擇檔案','','Excel files(*.xlsx , *.xls)')中的self引數需要是具有QtWidgets.QMainWindow類的引數