參考書籍《PyQt5 快速開發與實戰》王碩 孫洋洋 著
介紹
QFileDialog是用來打開和儲存檔案的标準對話框。QFileDialog類繼承自QDialog類。
QFileDialog在打開檔案時使用了檔案過濾器,用于顯示指定擴充名的檔案。也可以設定使用QFileDialog打開檔案時的起始目錄和指定擴充名的檔案。
代碼
QFileDialog的使用
# -*- coding: utf-8 -*-
'''
【簡介】
PyQt5中 QFileDialog 例子
'''
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class filedialogdemo(QWidget):
def __init__(self, parent=None):
super(filedialogdemo, self).__init__(parent)
layout = QVBoxLayout()
self.btn = QPushButton("加載圖檔")
self.btn.clicked.connect(self.getfile)
layout.addWidget(self.btn)
self.le = QLabel("")
layout.addWidget(self.le)
self.btn1 = QPushButton("加載文本檔案")
self.btn1.clicked.connect(self.getfiles)
layout.addWidget(self.btn1)
self.contents = QTextEdit()
layout.addWidget(self.contents)
self.setLayout(layout)
self.setWindowTitle("File Dialog 例子")
def getfile(self):
'''
getOpenFileName():傳回使用者所選擇檔案的名稱,并打開該檔案
第一個參數用于指定父元件
第二個參數指定對話框标題
第三個參數指定目錄
第四個參數是檔案擴充名過濾器
'''
fname, _ = QFileDialog.getOpenFileName(self, 'Open file', 'c:\\',"Image files (*.jpg *.gif)")
self.le.setPixmap(QPixmap(fname))
def getfiles(self):
'''
setFileMode():
QFileDialog.AnyFile,任何檔案
QFileDialog.ExistingFile,已存在的檔案
QFileDialog.Directory,檔案目錄
QFileDialog.ExistingFiles,已經存在的多個檔案
'''
dlg = QFileDialog()
dlg.setFileMode(QFileDialog.AnyFile)
#設定過濾器
dlg.setFilter( QDir.Files )
if dlg.exec_():
filenames= dlg.selectedFiles()
f = open(filenames[], 'r')
with f:
data = f.read()
self.contents.setText(data)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = filedialogdemo()
ex.show()
sys.exit(app.exec_())
效果展示
參考資源
1.《PyQt5快速開發與實戰》王碩,孫洋洋
2.《PyQt5快速開發與實戰》源代碼下載下傳連結