PyQt打开保存对话框的方法和使用详解


Posted in Python onFebruary 27, 2019

PyQt之打开保存对话框(QFileDialog)的方法和使用

一、控件说明

QFileDialog是用于打开和保存文件的标准对话框,继承自QDialog类。
QFileDialog在打开文件时使用了文件过滤器,用于显示指定扩展名的文件,也可以设置使用QFileDialog打开文件时的起始文件路径和指定扩展名。

二、QFileDialog类的常用方法

getOpenFileName():

返回用户所选择文件的名称并打开该文件

getSaveFileName():

使用用户选择的文件名并保存文件
例:QFileDialog.getOpenFileName(self,‘open file',‘D:\',‘Image files(*.jpg *.png)')

  • 第一个参数是指定父窗口
  • 第二个参数是标题
  • 第三个是默认打开目录,使用.代表当前目录
  • 第四个是文件扩展名过滤器表示只能显示扩展名为.jpg和.png的文件

setFileMode():

可以选择的文件类型,没举型常量:
QFileDialog.AnyFile-任何文件
QFileDialog.ExistingFile-已存在的文件
QFileDialog.Directory-文件目录
QFileDialog.ExistingFiles-已存在的多个文件

setFilter():

设置过滤器,只显示过滤器允许的文件类型

三、应用举例

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class filedalogdemo(QWidget):
 def __init__(self,parent=None):
  super(filedalogdemo,self).__init__(parent)
  layout=QVBoxLayout()

  self.btn=QPushButton("加载图片")
  self.btn.clicked.connect(self.getfile)
  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.text=QTextEdit()
  layout.addWidget(self.text)
  self.setLayout(layout)
  self.setWindowTitle("File Dialog例子")
 def getfile(self):
  fname,_=QFileDialog.getOpenFileName(self,'打开文件',"D:\\","Image files(*.jpg *.gif)")
  self.le.setPixmap(QPixmap(fname))

 def getfiles(self):
  dlg=QFileDialog()
  dlg.setFileMode(QFileDialog.AnyFile)
  dlg.setFilter(QDir.Files)
  if dlg.exec_():
   filenames=dlg.selectedFiles()
   f=open(filenames[0],'r')
   with f:
    data=f.read()
    self.text.setText(data)
if __name__=="__main__":
 app=QApplication(sys.argv)
 win=filedalogdemo()
 win.show()
 sys.exit(app.exec_())

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python笔记(叁)继续学习
Oct 24 Python
在Python中操作时间之strptime()方法的使用
Dec 30 Python
Python采用Django开发自己的博客系统
Sep 29 Python
Python基于time模块求程序运行时间的方法
Sep 18 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
Sep 25 Python
基于Python中capitalize()与title()的区别详解
Dec 09 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
Oct 26 Python
django多个APP的urls设置方法(views重复问题解决)
Jul 19 Python
Django使用中间件解决前后端同源策略问题
Sep 02 Python
Pytorch 的损失函数Loss function使用详解
Jan 02 Python
Python socket处理client连接过程解析
Mar 18 Python
Python私有属性私有方法应用实例解析
Sep 15 Python
python中嵌套函数的实操步骤
Feb 27 #Python
python把1变成01的步骤总结
Feb 27 #Python
PyQt弹出式对话框的常用方法及标准按钮类型
Feb 27 #Python
学习python的前途 python挣钱
Feb 27 #Python
scrapy-redis的安装部署步骤讲解
Feb 27 #Python
python三引号输出方法
Feb 27 #Python
浅析python的Lambda表达式
Feb 27 #Python
You might like
加强版phplib的DB类
2008/03/31 PHP
php中json_decode()和json_encode()的使用方法
2012/06/04 PHP
PHP include任意文件或URL介绍
2014/04/29 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
2008/08/14 Javascript
Dom 是什么的详细说明
2010/10/25 Javascript
ie8模式下click无反应点击option无反应的解决方法
2014/10/11 Javascript
jQuery中wrapInner()方法用法实例
2015/01/16 Javascript
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
js代码实现随机颜色的小方块
2015/07/30 Javascript
etmvc+jQuery EasyUI+combobox多值操作实现角色授权实例
2016/11/09 Javascript
JavaScript实现大图轮播效果
2017/01/11 Javascript
原生javascript实现图片放大镜效果
2017/01/18 Javascript
JS实现双击内容变为可编辑状态
2017/03/03 Javascript
详解Angular 自定义结构指令
2017/06/21 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
django 数据库连接模块解析及简单长连接改造方法
2019/08/29 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
2020/02/20 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
python 获取字典特定值对应的键的实现
2020/09/29 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
Html5基于canvas实现电子签名并生成PDF文档
2020/12/07 HTML / CSS
台湾最大银发乐活百货:乐龄网
2018/05/21 全球购物
日本必酷网络直营店:Biccamera
2019/03/23 全球购物
农药学硕士毕业生自荐信
2013/09/25 职场文书
市场营销专业推荐信
2013/11/03 职场文书
社区学习雷锋活动总结
2014/04/25 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
解析:创业计划书和商业计划书二者之间到底有什么区别
2019/08/14 职场文书
python实战之用emoji表情生成文字
2021/05/08 Python
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL
Nginx防盗链与服务优化配置的全过程
2022/01/18 Servers
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers