python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例


Posted in Python onFebruary 27, 2020

PyQt5打开保存对话框QFileDialog介绍

QFIleDialog是用于打开和保存文件的标准对话框。QFileDialog类继承自QDialog类

QFileDialog在打开文件时使用可文件过滤器,用于显示指定扩展名的文件,也可以设置使用QFileDialog打开文件时的起始目录和指定扩展名的文件

QFileDialog类中的常用方法

方法 描述
getOpenFileName() 返回用户所选择文件的名称,并打开该文件
getSaveFileName() 使用用户选择的文件名保存文件
setFileMode() 可以选择的文件类型,枚举常量是:
QFileDialog.AnyFile:任何文件
QFileDialog.ExistingFile:已存在的文件
QFileDialog.Directory:文件目录
QFileDialog.ExistingFiles:已经存在的多个文件
setFilter() 设置过滤器,只显示过滤器允许的文件类型

QFileDialog使用实例

import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *

class fileDialogdemo(QWidget):
  def __init__(self,parent=None):
    super(fileDialogdemo, self).__init__(parent)

    #垂直布局
    layout=QVBoxLayout()

    #创建按钮,绑定自定义的槽函数,添加到布局中
    self.btn=QPushButton("加载图片")
    self.btn.clicked.connect(self.getimage)
    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 getimage(self):
    #从C盘打开文件格式(*.jpg *.gif *.png *.jpeg)文件,返回路径
    image_file,_=QFileDialog.getOpenFileName(self,'Open file','C:\\','Image files (*.jpg *.gif *.png *.jpeg)')
    #设置标签的图片
    self.le.setPixmap(QPixmap(image_file))
  def getFiles(self):
    #实例化QFileDialog
    dig=QFileDialog()
    #设置可以打开任何文件
    dig.setFileMode(QFileDialog.AnyFile)
    #文件过滤
    dig.setFilter(QDir.Files)

    if dig.exec_():
      #接受选中文件的路径,默认为列表
      filenames=dig.selectedFiles()
      #列表中的第一个元素即是文件路径,以只读的方式打开文件
      f=open(filenames[0],'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_())

效果如下

python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例

python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例

python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例

代码分析

在这个例子里,通过文件对话框来选择文件,其中第一个文件对话框只允许打开图片文件,并把加载的图片显示在标签上,第二个文件对话框只允许打开文本文件,并把打开的文本内容显示在文本框内

第一个按钮使用QFileDialog.getOpenFilename(),调用文件对话框来显示图片,并显示在一个标签控件中,它负责打开c盘目录下的为文件,核心代码如下

#从C盘打开文件格式(*.jpg *.gif *.png *.jpeg)文件,返回路径
image_file,_=QFileDialog.getOpenFileName(self,'Open file','C:\\','Image files (*.jpg *.gif *.png *.jpeg)')
#设置标签的图片
self.le.setPixmap(QPixmap(image_file))

在QFIleDialog.getOpenFileName()函数中

第一个参数self:用于指定父组件

第二个参数‘open file':是QFileDialog对话框的标题

第三个参数‘C:\'默认打开的目录,‘.'代表程序运行的目录,‘/'代表当前盘下的根目录(window.linux系统),需要注意的是不同路径的显示方式,比如window平台下的C盘“C:\”等

第四个参数是对话框中文件扩展名过滤器(fliter),比如使用'Image files (.jpg .gif .png .jpeg)'表示只能显示扩展名为.jpg,.gif等文件

第二个安妞使用文件对话框(QFileDialog)对象的exec_()方法来选择文件,并把所选的文件的内容显示在文本编译控件中,核心代码

def getFiles(self):
    #实例化QFileDialog
    dig=QFileDialog()
    #设置可以打开任何文件
    dig.setFileMode(QFileDialog.AnyFile)
    #文件过滤
    dig.setFilter(QDir.Files)

    if dig.exec_():
      #接受选中文件的路径,默认为列表
      filenames=dig.selectedFiles()
      #列表中的第一个元素即是文件路径,以只读的方式打开文件
      f=open(filenames[0],'r')

      with f:
        #接受读取的内容,并显示到多行文本框中
        data=f.read()
        self.contents.setText(data)

本文详细讲解了PyQt5打开保存对话框QFileDialog详细使用方法与实例,大家可以参考一下,更多关于这方面的知识请查看下面的相关链接

Python 相关文章推荐
python创建只读属性对象的方法(ReadOnlyObject)
Feb 10 Python
浅谈Python程序与C++程序的联合使用
Apr 07 Python
基于anaconda下强大的conda命令介绍
Jun 11 Python
python文件操作之批量修改文件后缀名的方法
Aug 10 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
Jun 17 Python
set在python里的含义和用法
Jun 24 Python
python实现在函数图像上添加文字和标注的方法
Jul 08 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
Aug 04 Python
Pytoch之torchvision.transforms图像变换实例
Dec 30 Python
Python中的整除和取模实例
Jun 03 Python
Python干货实战之八音符酱小游戏全过程详解
Oct 24 Python
Python中request的基本使用解决乱码问题
Apr 12 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
Feb 27 #Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
Feb 27 #Python
Python如何使用OS模块调用cmd
Feb 27 #Python
python之生成多层json结构的实现
Feb 27 #Python
Python查找不限层级Json数据中某个key或者value的路径方式
Feb 27 #Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
Feb 27 #Python
使用 Python 在京东上抢口罩的思路详解
Feb 27 #Python
You might like
PHP设计模式之代理模式的深入解析
2013/06/13 PHP
关于Yii中模型场景的一些简单介绍
2019/09/22 PHP
用js统计用户下载网页所需时间的脚本
2008/10/15 Javascript
Prototype RegExp对象 学习
2009/07/19 Javascript
编写高性能的JavaScript 脚本的加载与执行
2010/04/19 Javascript
Javascript Object.extend
2010/05/18 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
IE浏览器中图片onload事件无效的解决方法
2014/04/29 Javascript
node.js中的fs.open方法使用说明
2014/12/17 Javascript
jQuery制作简洁的多级联动Select下拉框
2014/12/23 Javascript
深入理解Node.js 事件循环和回调函数
2016/11/02 Javascript
JavaScript日期选择功能示例
2017/01/16 Javascript
nodejs6下使用koa2框架实例
2017/05/18 NodeJs
网页中的图片查看器viewjs使用方法
2017/07/11 Javascript
深入浅出es6模板字符串
2017/08/26 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
vue项目首屏加载时间优化实战
2019/04/23 Javascript
微信小程序实现带放大效果的轮播图
2020/05/26 Javascript
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
Python实现程序的单一实例用法分析
2015/06/03 Python
python实现给数组按片赋值的方法
2015/07/28 Python
Tensorflow中的placeholder和feed_dict的使用
2018/07/09 Python
python实现三维拟合的方法
2018/12/29 Python
selenium+python自动化测试之环境搭建
2019/01/23 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
2019/08/02 Python
Python文件操作基础流程解析
2020/03/19 Python
python3 中时间戳、时间、日期的转换和加减操作
2020/07/14 Python
html5的新增的标签和废除的标签简要概述
2013/02/20 HTML / CSS
介绍一下write命令
2014/08/10 面试题
函授教育个人学习的自我评价
2013/12/31 职场文书
党员廉洁自律承诺书
2014/05/26 职场文书
故宫导游词
2015/01/31 职场文书
MySQL深度分页(千万级数据量如何快速分页)
2021/07/25 MySQL
JavaScript ES6的函数拓展
2022/01/18 Javascript