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_())