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的批量远程管理和部署工具Fabric用法实例
Jan 23 Python
Python判断文本中消息重复次数的方法
Apr 27 Python
pandas string转dataframe的方法
Apr 11 Python
解决python给列表里添加字典时被最后一个覆盖的问题
Jan 21 Python
图文详解python安装Scrapy框架步骤
May 20 Python
Python Pandas分组聚合的实现方法
Jul 02 Python
Django实现基于类的分页功能
Oct 31 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
Jan 15 Python
属性与 @property 方法让你的python更高效
Sep 21 Python
python实战之90行代码写个猜数字游戏
Apr 22 Python
Python 如何安装Selenium
May 06 Python
python scipy 稀疏矩阵的使用说明
May 26 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连接mysql数据库代码
2009/03/10 PHP
laravel5.1 ajax post 传值_token示例
2019/10/24 PHP
PHP生成图表pChart的示例解析
2020/07/31 PHP
JS弹出对话框返回值代码(asp.net后台)
2010/12/28 Javascript
js怎么终止程序return不行换jfslk
2013/05/30 Javascript
js点击选择文本的方法
2015/02/09 Javascript
关注jquery技巧提高jquery技能(前端开发必学)
2015/11/02 Javascript
javascript时间排序算法实现活动秒杀倒计时效果
2021/01/28 Javascript
使用JQuery中的trim()方法去掉前后空格
2016/09/16 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
bootstrap 模态框(modal)实现水平垂直居中显示
2017/01/23 Javascript
Vue声明式渲染详解
2017/05/17 Javascript
在Vue中使用highCharts绘制3d饼图的方法
2018/02/08 Javascript
JavaScript循环遍历你会用哪些之小结篇
2018/09/28 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
JS动态显示倒计时效果
2019/12/12 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
2020/05/10 Javascript
Python for Informatics 第11章 正则表达式(一)
2016/04/21 Python
Python字符串拼接的几种方法整理
2017/08/02 Python
python实现图片处理和特征提取详解
2017/11/13 Python
python调用百度语音REST API
2018/08/30 Python
python使用adbapi实现MySQL数据库的异步存储
2019/03/19 Python
python实现基于朴素贝叶斯的垃圾分类算法
2019/07/09 Python
Python的Tkinter点击按钮触发事件的例子
2019/07/19 Python
联想中国官方商城:Lenovo China
2017/10/18 全球购物
英国门销售网站:Green Tree Doors
2020/01/07 全球购物
英语演讲稿范文
2014/01/03 职场文书
展会邀请函范文
2014/01/26 职场文书
信息总监管理职责范本
2014/03/08 职场文书
王老吉广告词
2014/03/20 职场文书
法人委托书范本
2014/04/04 职场文书
企业安全生产目标责任书
2014/07/23 职场文书
党员对照检查材料整改措施思想汇报
2014/09/26 职场文书
小学一年级语文教学反思
2016/03/03 职场文书
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS