1. 程式人生 > 實用技巧 >對話方塊類控制元件-QFileDialog

對話方塊類控制元件-QFileDialog

QFileDialog是用於開啟和保持檔案的標準對話方塊。QFileDialog類繼承自QDialog類。

QFileDialog在開啟檔案時使用了檔案過濾器,用於顯示指定副檔名的檔案。也可以設定使用QFileDialog開啟檔案時的起始目錄和指定副檔名的檔案。

QFileDialog類的常用方法:

  getOpenFileName()    返回使用者所選擇檔案的名稱,並開啟該檔案

  getSaveFileName()    使用使用者選擇的檔名稱並保持檔案

  setFileMode()       可以選擇的檔案型別,列舉常量是:

                 QFileDialog.AnyFile,任何檔案

                 QFileDialog.ExistingFile,已存在的檔案

                 QFileDialog.Drectory,檔案目錄

                 QFileDialog.ExistingFiles,已經存在的多個檔案

  setFilter()        設定過濾器,只顯示過濾器允許的檔案型別

案例24 QFileDialog的使用

import sys
from PyQt5.QtWidgets import QWidget, QApplication, QFileDialog, QPushButton, QVBoxLayout, QLabel, QTextEdit
from PyQt5.QtGui import QPixmap from PyQt5.QtCore import QDir class FileDialogDemo(QWidget): def __init__(self, parent=None): super().__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("FileDialog 例子") def getFile(self): fname, _ = QFileDialog.getOpenFileName(self, "Open file", "c:/", "Image files (*.jpg *.gif *.png)") self.le.setPixmap(QPixmap(fname)) def getFiles(self): dlg = QFileDialog() dlg.setFileMode(QFileDialog.AnyFile) dlg.setFilter(QDir.Files) if dlg.exec_(): filenames = dlg.selectedFiles() f = open(filenames[0], "r") with f: data = f.read() self.contents.setText(data) if __name__ == "__main__": app = QApplication(sys.argv) demo = FileDialogDemo() demo.show() sys.exit(app.exec_())