对话框类控件-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_())
原文地址:https://www.cnblogs.com/lynsha/p/13427110.html