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分割TXT文件成4K的TXT文件
May 23 Python
python实现颜色空间转换程序(Tkinter)
Dec 31 Python
python基础教程之五种数据类型详解
Jan 12 Python
django 发送邮件和缓存的实现代码
Jul 18 Python
python3 线性回归验证方法
Jul 09 Python
详解python中的生成器、迭代器、闭包、装饰器
Aug 22 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
Oct 23 Python
Tensorflow训练模型越来越慢的2种解决方案
Feb 07 Python
Python3 mmap内存映射文件示例解析
Mar 23 Python
解决pycharm下pyuic工具使用的问题
Apr 08 Python
python实战之一步一步教你绘制小猪佩奇
Apr 22 Python
Python 读写 Matlab Mat 格式数据的操作
May 19 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实现给图片加灰色半透明效果的方法
2014/10/20 PHP
php实现仿写CodeIgniter的购物车类
2015/07/29 PHP
PHP命名空间用法实例分析
2019/09/04 PHP
Javascript 的addEventListener()及attachEvent()区别分析
2009/05/21 Javascript
JS实现左右无缝轮播图代码
2016/05/01 Javascript
基于jQuery ligerUI实现分页样式
2016/09/18 Javascript
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
js实现手机web图片左右滑动效果
2017/12/29 Javascript
bootstrap 路径导航 分页 进度条的实例代码
2018/08/06 Javascript
[00:32]2018DOTA2亚洲邀请赛Liquid出场
2018/04/03 DOTA
[58:11]守擂赛第二周擂主赛 DeMonsTer vs Leopard
2020/04/28 DOTA
零基础写python爬虫之打包生成exe文件
2014/11/06 Python
python爬虫爬取快手视频多线程下载功能
2018/02/28 Python
python单例模式获取IP代理的方法详解
2018/09/13 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
Python selenium根据class定位页面元素的方法
2019/02/26 Python
python绘制漏斗图步骤详解
2019/03/04 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
Python+redis通过限流保护高并发系统
2020/04/15 Python
pandas中的ExcelWriter和ExcelFile的实现方法
2020/04/24 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
python mock测试的示例
2020/10/19 Python
英国网络托管和域名领导者:Web Hosting UK
2017/10/15 全球购物
Internal修饰符有什么含义
2013/07/10 面试题
高一自我鉴定
2013/12/17 职场文书
物流仓管员工作职责
2014/01/06 职场文书
大学班长的职责
2014/01/27 职场文书
给老婆大人的检讨书
2014/02/24 职场文书
镇人大副主席民主生活会对照检查材料思想汇报
2014/10/01 职场文书
销售员工作检讨书(推荐篇)
2014/10/18 职场文书
逃课检讨书怎么写
2015/01/01 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
工程主管竞聘书
2015/09/15 职场文书
Python opencv缺陷检测的实现及问题解决
2021/04/24 Python
mysql中between的边界,范围说明
2021/06/08 MySQL
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫