Ps:水平有限,歡迎建議和挑錯
QFileDialog是一個打開文件或者文件夾選擇對話框跨晴。
類似于我們平時上傳文件選擇文件的界面
介紹
打開文件有以下3種:
1、單個文件打開 QFileDialog.getOpenFileName()
2、多個文件打開 QFileDialog.getOpenFileNames()
3强衡、打開文件夾 QFileDialog.getExistingDirectory()
QFileDialog::getOpenFileName 或者QFileDialog.getExistingDirectory函數(shù)含有六個參數(shù)。(這個在網(wǎng)上有很多資料码荔,本文此資料來源于:https://doc.qt.io/qt-5/qfiledialog.html)
例:
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組件的構(gòu)造函數(shù)都會有這么一個parent參數(shù)越败,并提供一個默認(rèn)值0;在一般成員函數(shù)中寫作this硼瓣,但是要記住如果是在main函數(shù)中一定要寫NULL究飞。
- caption,是對話框的標(biāo)題堂鲤。
- ?dir亿傅,是對話框顯示時默認(rèn)打開的目錄。"." 代表程序運行目錄瘟栖,"/" 代表當(dāng)前盤符的根目錄葵擎。如果不明確選擇,只需要返回絕對路徑也可以這樣寫半哟。? QDir dir;dir.absolutePath()酬滤。這個參數(shù)是最不好理解的。
- ?filter镜沽,是對話框的后綴名過濾器敏晤。如果顯示該目錄下的全部文件可以“.”需要什么自己修改后面的*。
- selectedFilter缅茉,是默認(rèn)選擇的過濾器嘴脾。
- options,是對話框的一些參數(shù)設(shè)定蔬墩,比如只顯示文件夾等等译打,它的取值是enum QFileDialog::Option,每個選項可以使用 | 運算組合起來拇颅。
事件綁定
通常來說奏司,QFileDialog需要綁定到一個button組件上面
其實QFileDialog就是一個事件,需要button來觸發(fā)樟插。
實例
1韵洋、界面
首先我們創(chuàng)建一個mainwindow竿刁,代碼如下:
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)
MainWindow.setCentralWidget(self.centralWidget)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "一顆數(shù)據(jù)小白菜"))
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_())
然后添加一個button組件:
self.pushButton = QtWidgets.QPushButton(self.centralWidget)
self.pushButton.setGeometry(QtCore.QRect(190, 90, 75, 23))
self.pushButton.setObjectName("pushButton")
self.pushButton.setText("打開")
2、事件
定義事件函數(shù):
def openfile(self):
openfile_name = QFileDialog.getOpenFileName(self,'選擇文件','','Excel files(*.xlsx , *.xls)')
綁定事件:
self.pushButton.clicked.connect(self.openfile)
3搪缨、最終代碼
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", "一顆數(shù)據(jù)小白菜"))
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_())
我們還可以做到打開文件并顯示文件內(nèi)容食拜。效果如下: