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发送form-data请求及拼接form-data内容的方法
Mar 05 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
Feb 14 Python
Python简单实现查找一个字符串中最长不重复子串的方法
Mar 26 Python
python3利用venv配置虚拟环境及过程中的小问题小结
Aug 01 Python
Python列表(List)知识点总结
Feb 18 Python
PyTorch的深度学习入门教程之构建神经网络
Jun 27 Python
python 中如何获取列表的索引
Jul 02 Python
使用python编写一个语音朗读闹钟功能的示例代码
Jul 14 Python
python selenium 获取接口数据的实现
Dec 07 Python
python实现图像随机裁剪的示例代码
Dec 10 Python
Python之京东商品秒杀的实现示例
Jan 06 Python
Python3接口性能测试实例代码
Jun 20 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
ftp类(example.php)
2006/10/09 PHP
php feof用来识别文件末尾字符的方法
2010/08/01 PHP
windows下安装php的memcache模块的方法
2015/04/07 PHP
微信获取用户地理位置信息的原理与步骤
2015/11/12 PHP
PHP页面输出搜索后跳转下一页的处理方法
2016/09/30 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
用jquery设置按钮的disabled属性的实现代码
2010/11/28 Javascript
js Array对象的扩展函数代码
2013/04/24 Javascript
关于jquery.validate1.9.0前台验证的使用介绍
2013/04/26 Javascript
JS图像无缝滚动脚本非常好用
2014/02/10 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
AngularJS入门教程之更多模板详解
2016/08/19 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
2017/01/05 Javascript
nodejs 子进程正确的打开方式
2017/07/03 NodeJs
Angular.js中angular-ui-router的简单实践
2017/07/18 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
vuex实现像调用模板方法一样调用Mutations方法
2019/11/06 Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
2020/03/31 Javascript
nuxt 自定义 auth 中间件实现令牌的持久化操作
2020/11/05 Javascript
原生JS实现拖拽功能
2020/12/16 Javascript
Python群发邮件实例代码
2014/01/03 Python
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
Python Opencv实现图像轮廓识别功能
2020/03/23 Python
Python3实现发送邮件和发送短信验证码功能
2020/01/07 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
2020/03/06 Python
CSS3制作酷炫的三维相册效果
2016/07/01 HTML / CSS
HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例
2016/02/28 HTML / CSS
VICHY薇姿俄罗斯官方网上商店:法国护肤品牌,火山温泉水
2019/11/22 全球购物
什么是smarty? Smarty的优点是什么?
2013/08/11 面试题
三下乡活动方案
2014/01/31 职场文书
2014学雷锋活动心得体会
2014/03/10 职场文书
十佳党员事迹材料
2014/08/28 职场文书
三好学生先进事迹材料
2014/08/28 职场文书
学校中秋节活动总结
2015/03/23 职场文书