PyQt5之QFileDialog
QFileDialog是用于打开和保存文件的标准对话框,QFileDialog在打开文件时使用了文件过滤器,用于显示指定扩展名的文件。也可以设置使用QFileDialog打开文件时的起始目录和指定扩展名的文件。
一、QFileDialog类中的常用方法
方法 | 描述 |
---|---|
getOpenFileName() | 返回用户所选择的文件名称,并打开该文件 |
getSaveFileName() | 使用用户选择的文件名保存文件 |
setFilter() | 设置过滤器,只显示过滤器允许的文件类型 |
setFileMode() | 可以选择文件的类型,枚举常量是:QFileDialog.AnyFile(任何文件)、QFileDialog.ExistingFile(已存在的文件)、QFileDialog.Directory (文件目录)、QFileDialog.ExistingFiles (已经存在的多个文件) |
二、QFileDialog的使用
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class Win(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(200, 200, 400, 400)
self.setWindowTitle('QFileDialog的使用')
self.btn1 = QPushButton('加载图片')
self.btn1.clicked.connect(self.getFile)
self.label = QLabel('')
self.btn2 = QPushButton('加载文本文件')
self.btn2.clicked.connect(self.getFiles)
self.text = QTextEdit()
layout = QVBoxLayout()
layout.addWidget(self.btn1)
layout.addWidget(self.label)
layout.addWidget(self.btn2)
layout.addWidget(self.text)
self.setLayout(layout)
def getFile(self):
fname ,_ = QFileDialog.getOpenFileName(self,'Open File','d:\\Python--PyQt5--Eric6','Image files (*.jpg)')
self.label.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.text.setText(data)
if __name__ == "__main__":
app = QApplication(sys.argv)
form = Win()
form.show()
sys.exit(app.exec_())
代码分析:第一个按钮用来调用文件对话框显示图片,在QFileDialog.getOpenFileName()
函数中第一个参数用于指定父组件、第二个参数是QFileDialog对话框的标题、第三个参数是对话框显示时默认打开的目录、第四个参数是对话框中文扩展名的过滤器。“.”代表程序运行目录,“/”代表当前盘下的根目录,需要注意的是不同平台下路径的显示方式可能不同。
运行结果如下: