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 相关文章推荐
在Linux下调试Python代码的各种方法
Apr 17 Python
python中实现迭代器(iterator)的方法示例
Jan 19 Python
Python正则表达式非贪婪、多行匹配功能示例
Aug 08 Python
Python中类的初始化特殊方法
Dec 01 Python
Python中使用Counter进行字典创建以及key数量统计的方法
Jul 06 Python
python代码过长的换行方法
Jul 19 Python
python实现n个数中选出m个数的方法
Nov 13 Python
简单了解django缓存方式及配置
Jul 19 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
Aug 17 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 Python
PYTHON发送邮件YAGMAIL的简单实现解析
Oct 28 Python
python中Matplotlib绘制直线的实例代码
Jul 04 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执行速度全攻略(上)
2006/10/09 PHP
关于BIG5-HKSCS的解决方法
2007/03/20 PHP
php学习之 循环结构实现代码
2011/06/09 PHP
Win7 64位系统下PHP连接Oracle数据库
2014/08/20 PHP
php字符串操作针对负值的判断分析
2016/07/28 PHP
对于this和$(this)的个人理解
2013/09/08 Javascript
js实现点小图看大图效果的思路及示例代码
2013/10/28 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
2014/01/16 Javascript
javascript实现des解密加密全过程
2014/04/03 Javascript
jquery实现的一个简单进度条效果实例
2014/05/12 Javascript
JavaScript面向对象的实现方法小结
2015/04/14 Javascript
谈谈JavaScript中function多重理解
2015/08/28 Javascript
谈一谈jQuery核心架构设计
2016/03/28 Javascript
静态页面html中跳转传值的JS处理技巧
2016/06/22 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
前端主流框架vue学习笔记第一篇
2017/07/26 Javascript
解决vue-cli创建项目的loader问题
2018/03/13 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
Echarts实现单条折线可拖拽效果
2019/12/19 Javascript
Vue+Openlayers自定义轨迹动画
2020/09/24 Javascript
[06:25]DOTA2英雄梦之声_第17期_大地之灵
2014/06/20 DOTA
Python中的文件和目录操作实现代码
2011/03/13 Python
python简单实现计算过期时间的方法
2015/06/09 Python
python实现控制COM口的示例
2019/07/03 Python
如何使用Python进行PDF图片识别OCR
2021/01/22 Python
咖啡为什么会有酸味?你喝到的咖啡為什麼是酸的?
2021/03/17 冲泡冲煮
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
Bonami斯洛伐克:购买家具和家居饰品
2019/07/02 全球购物
有子女的离婚协议书怎么写(范本)
2014/09/29 职场文书
民主生活会剖析材料
2014/09/30 职场文书
2014年计生工作总结
2014/11/21 职场文书
2016年“5.12”护士节致辞
2015/07/31 职场文书
2016年小学推普宣传周活动总结
2016/04/06 职场文书
Python max函数中key的用法及原理解析
2021/06/26 Python
新手初学Java网络编程
2021/07/07 Java/Android
使用Canvas绘制一个游戏人物属性图
2022/03/25 Javascript