python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例

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_())

效果如下

代码分析

在这个例子里,通过文件对话框来选择文件,其中第一个文件对话框只允许打开图片文件,并把加载的图片显示在标签上,第二个文件对话框只允许打开文本文件,并把打开的文本内容显示在文本框内

第一个按钮使用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详细使用方法与实例,大家可以参考一下,更多关于这方面的知识请查看下面的相关链接

(0)

相关推荐

  • python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍

    信号和槽机制是 QT 的核心机制,要精通 QT 编程就必须对信号和槽有所了解.信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性,也是 QT 区别于其它工具包的重要地方. 在linux.windows等 GUI 工具包中,GUI组件都会注册回调函数用于处理组件所触发的动作,通常是注册对应的函数的函数指针.在之前关于Button的文章中提到了信号与槽的机制的使用,通过该机制可以很好的将组件的信号(如button的clocked.toggled.pressed等)和处理该信号的槽关

  • python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例

    QTimer控件介绍 如果在应用程序中周期性地进行某项操作,比如周期性的检测主机的cpu值,则需要用到QTimer定时器,QTimer类提供了重复和单次的定时器,要使用定时器,需要先创建一个QTimer实例,将其Timeout信号连接到槽函数,并调用start(),然后,定时器,会以恒定的间隔发出timeout信号 当窗口的控件收到Timeout信号后,他就会停止这个定时器,这是在图形用户界面中实现复杂工作的一个典型用法,随着技术的进步,多线程在越来越多的平台上被使用,QTimer对象会被替代掉

  • python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例

    PyQt5图片显示控件QPixmap介绍 QPixmap类用于绘图设备的图像显示,它可以作为一个QPainterDevice对象,也可以加载到一个控件中,通常是标签或者按钮,用于在标签或按钮上显示图像 QPixmap可以读取的图像文件类型有BMP,GIF,JPG等 QPixmap类中常用的方法 方法 描述 copy() 从QRect对象复制到QPixmap对象 fromImage() 将QImage对象转换为QPixmap对象 grabWidget() 从给定的一个窗口小控件创建一个像素图 gr

  • python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性

    QTableWidget介绍 QTableWidget是Qt程序中常用的显示数据表格的控件,类似于c#中的DataGrid.QTableWidget是QTableView的子类,它使用标准的数据模型,并且其单元数据是通过QTableWidgetItem对象来实现的,使用QTableWidget时就需要QTableWidgetItem.用来表示表格中的一个单元格,整个表格就是用各个单元格构建起来的 QTableWidget类中的常用方法 方法 描述 setROwCount(int row) 设置Q

  • python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例

    PyQt5输入对话框QInputDialog介绍 QInputDialog控件是一个标准对话框,有一个文本框和两个按钮(ok和cancel)组成,当用户单击ok或enter键后,在父窗口可以收集通过QInputDialog控件输入的信息,QInputDialog控件是QDialog标准对话框的一部分 在QInpuTDialog控件中可以输入数字,字符串或列表中的选项,标签用于提示必要的信息 QInputDialog类中常用的方法 方法 描述 getint() 从控件中获得标准整数输入 getDo

  • python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择

    PyQt中MainWindow, QWidget以及Dialog的区别和选择 1. Qt界面分类 在Qt Designer设计界面时,首先需要选择界面模板,主要分为三个类: Main Window Widget Dialog 2. 三种模板的区别(官方文档介绍) MainWindow QMainWindow类提供一个有菜单条.锚接窗口(例如工具条)和一个状态条的主应用程序窗口. 主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围菜单.工具条和一个状态条.QMainWind

  • python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例

    这几天研究了下PyQt5中QWebEngineView内嵌网页与Python的数据交互,今天把实例方法与代码发布出来供大家参数 数据交互需要load进一个网页,这里我选择load进一个本地html网页:JSTest.html. 同时,QWebEngineView与外面的交互还需要Qt官方提供的一个js文件:qwebchannel.js,这个文件可以在网上下载. JSTest.html和qwebchannel.js两个文件放在同一个目录下,我这边都是放在Python工程目录下. qwebchann

  • python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法

    PyQt5浏览器控件QWebEngineView PyQt5使用QWebEngineView控件来展示HTML页面,对老版本的QWebView类不在进行维护,因为QWebEngineView使用CHromium内核可以给用户带来更好的体验 QWebEngineView类中常用方法 方法 描述 load(QUrl url) 加载指定的URL并显示 setHtml(QString&html) 将网页视图的内容设置为指定的HTML内容 QWebEngineView控件使用load()函数加载一个Web

  • python GUI库图形界面开发之PyQt5信号与槽基本操作

    信号与槽基本操作 进入Qt Designer,加入控件,本文以按钮为例. 按F4开始后,选择需要加入信号与槽的按钮,如下图所示该按钮会变红,按住鼠标拉出一条红线,若该按钮需控制旁边的label,则红线连接到label上(图1),若对框体(MainWindow)进行操作,则链接到框体上,会出现一个像物理中"地线"似的符号(图2). 图1 图2 连接后,会弹出如下窗体(图3),左侧界面选择信号,如下图中选择"clicked()"代表点击按钮触发右侧对应槽的操作. 勾选下

  • python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法

    PyQt5 Qt Designer (Qt设计师) PyQt5是对Qt所有类进行封装, Qt能开发的东西, PyQt都能开发. Qt是强大的GUI库之一, 用C++开发, 并且跨平台. PyQt双许可证, 要么选择GPL(自由软件协议)将代码开源, 要么选择商业许可交商业许可费. PySide拥有LGPL 2.1授权许可, 可开发 免费开源软件 和 私有商业软件. 把PyQt5代码切换到PySide2代码是相当容易的, 这也是为什么选择学习PyQt5的原因 准备工作 安装PyQt5: pip i

  • python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法

    QWidget基本介绍 基础窗口控件QWidget类是所有用户界面对象的基类,所有的窗口或者控件都直接或者间接的继承自QWidget类. 窗口坐标系统 PyQt使用统一的坐标系统来定位窗口控件的位置和大小,具体如下 以屏幕左上角为原点,也就是(0, 0)点,从左向右为x轴正方向,从上向下为y轴正方向,整个屏幕的坐标系统用来定位顶层窗口. 在窗口内部也有自己的坐标系统,该坐标系统以客户区的左上角为原点,从左向右为x轴正方向,从上到下为y轴正方向,在客户区周围有标题栏和边框. 从上图中,可以将这些成

  • python GUI库图形界面开发之PyQt5动态加载QSS样式文件

    在Qt中经常需要使用样式,为了降低耦合性(与逻辑代码分离),我们通常会定义一个QSS文件,然后编写各种控件(QLabel,QLIneEdit,QPushButton等)的样式,最后使用QApplication或QMainWindow来加载样式,这样就可以让整个应用程序共享一种样式了 编写QSS 首先新建一个扩展名为.qss的文件,如style.qss,然后将其加入资源文件(.qrc)中,在style.qss文件中编写样式代码,例如 QMainWindow{ border-image:url(./

  • python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例

    PyQt5单行文本框控件QLineEdit介绍 QLineEdit类是一个单行文本框控件,可以输入单行字符串. QLineEdit类中常用的方法如下表 方法 描述 setAlignment() 按固定值方式对齐文本 Qt.AlignLeft:水平方向靠左对齐 Qt.AlignRight:水平方向靠右对齐 Qt.AlignCenter:水平方向居中对齐 Qt.AlignJustify:水平方向调整间距两端对齐 Qt.AlignTop:垂直方向靠上对齐 Qt.AlignBottom:垂直方向靠下对齐

  • python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例

    在做界面开发时,无论是移动端的Android,还是我们这里讲的PyQt5,经常会有一个界面开发准则,那就是UI主线程与耗时子线程一定要分开,主线程负责刷新界面,耗时操作,如网络交互.磁盘IO等,都应该放在子线程里执行,它们各司其职,保证系统正常运行,提升整体用户体验. 软硬件环境 windows 10 64bit PyQt5 Anaconda3 with python 3.6.5 实例代码 首先看下工程目录结构 main.py,这是工程入口文件,它负责创建app # -*- coding: ut

  • python GUI库图形界面开发之PyQt5线程类QThread详细使用方法

    QThread是Qt的线程类中最核心的底层类.由于PyQt的的跨平台特性,QThread要隐藏所有与平台相关的代码 要使用的QThread开始一个线程,可以创建它的一个子类,然后覆盖其它QThread.run()函数 class Thread(QThread): def __init __(self): super(Thread,self).__ init __() def run(self): #线程相关的代码 pass 接下来创建一个新的线程 thread = Thread() thread

  • python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法

    QMainWindow QMainWindow类中比较重要的方法 方法 描述 addToolBar() 添加工具栏 centralWidge() 返回窗口中心的一个控件,未设置时返回NULL menuBar() 返回主窗口的菜单栏 setCentralWidget() 设置窗口中心的控件 setStatusBar() 设置状态栏 statusBar() 获得状态栏对象后,调用状态栏对象的showMessage(message,int timeout=0)方法 显示状态栏信息,其中第一个参数是要显

  • PyQt5每天必学之像素图控件QPixmap

    QPixmap 像素图控件是用来处理图像的控件之一.它用于将优化后的图像显示在屏幕上.在我们的代码示例中,我们将使用QPixmap 控件在程序窗口上显示图像. #!/usr/bin/python3 # -*- coding: utf-8 -*- """ PyQt5 教程 在这个例子中,我们显示窗口上的图像. 作者:我的世界你曾经来过 博客:http://blog.csdn.net/weiaitaowang 最后编辑:2016年8月4日 """ i

  • python GUI库图形界面开发之PyQt5开发环境配置与基础使用

    PyQt5安装 在cmd下输入 pip install PyQt5 完成PyQt5安装,再安装qt designer,可以使用pip安装 pip install PyQt5-tools 安装完成后,在python安装目录下可以看到 配置PyCharm 配置PyCharm是为了在Pycharm里面实现打开qt designer,然后生成qt文件,然后将qt文件转换成python语言的软件文件. 打开Pycharm,按下图操作 打开Extrernal Tools之后,点击上如绿色的+,添加Tools

  • python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法

    PyQt5窗口布局控件QStackedWidget介绍 QTackedWidget是一个堆栈窗口控件,可以填充一些小控件,但是同一时间只有一个小控件可以显示,QStackedWidget使用QStackedLayout布局.QSTackedWidget控件与QTabWidget类似,可以有效的显示窗口的控件 QStackedWidget的使用实例 import sys from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.

随机推荐