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字符串替换实例分析
May 11 Python
Python实现简单拆分PDF文件的方法
Jul 30 Python
详解python 发送邮件实例代码
Dec 22 Python
python获取外网IP并发邮件的实现方法
Oct 01 Python
TensorFlow实现iris数据集线性回归
Sep 07 Python
Django框架设置cookies与获取cookies操作详解
May 27 Python
浅析Python 引号、注释、字符串
Jul 25 Python
Python yield的用法实例分析
Mar 06 Python
Python装饰器的应用场景代码总结
Apr 10 Python
python线程池如何使用
May 28 Python
python实现canny边缘检测
Sep 14 Python
python 利用jieba.analyse进行 关键词提取
Dec 17 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中加session验证)
2012/08/22 PHP
大家须知简单的php性能优化注意点
2016/01/04 PHP
php和asp语法上的区别总结
2019/05/12 PHP
使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
2010/05/07 Javascript
JavaScript 事件系统
2010/07/22 Javascript
Prototype源码浅析 Number部分
2012/01/16 Javascript
关于JS控制代码暂停的实现方法分享
2012/10/11 Javascript
无刷新预览所选择的图片示例代码
2014/04/02 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
2016/01/05 Javascript
Js获取当前日期时间及格式化代码
2016/09/17 Javascript
JavaScript实现页面定时刷新(定时器,meta)
2016/10/12 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
javaScript中"=="和"==="的区别详解
2018/03/16 Javascript
深入理解js 中async 函数的含义和用法
2018/05/13 Javascript
通过webpack引入第三方库的方法
2018/07/20 Javascript
基于Bootstrap下拉框插件bootstrap-select使用方法详解
2018/08/07 Javascript
Vue项目查看当前使用的elementUI版本的方法
2018/09/27 Javascript
JS面向对象编程基础篇(二) 封装操作实例详解
2020/03/03 Javascript
[01:17]Ti4 循环赛第一日回顾
2014/07/11 DOTA
[01:37]TI4西雅图DOTA2前线报道 VG拿下首胜教练357给出获胜秘诀
2014/07/10 DOTA
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
Python中json格式数据的编码与解码方法详解
2016/07/01 Python
python 利用文件锁单例执行脚本的方法
2019/02/19 Python
python迭代器常见用法实例分析
2019/11/22 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
2020/02/29 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
Python异常处理机制结构实例解析
2020/07/23 Python
介绍一下Cookie和Session及他们之间的区别
2012/11/20 面试题
初中物理教学反思
2014/01/14 职场文书
企业安全生产承诺书
2014/05/22 职场文书
家属答谢词
2015/01/05 职场文书
2015年共青团工作总结
2015/05/15 职场文书
干部考核工作总结
2015/08/12 职场文书
村官2015年度工作总结
2015/10/14 职场文书
导游词之江南周庄
2019/12/06 职场文书