【PyQt小知识 - 8】:QFileDialog — 文件选择对话框(选择文件夹/文件)

news2024/11/17 19:32:16

文章目录

  • QFileDialog的介绍和使用

QFileDialog的介绍和使用

QFileDialog是Qt框架中提供的一个文件选择对话框。它可以让用户通过图形界面的方式选择文件或目录,并提供了许多与文件操作相关的实用功能,例如文件过滤、文件类型限制、文件名默认值、默认目录等。

它具有以下常用的静态方法:

  1. getOpenFileName():选择单个文件打开,返回文件的完整路径。
  2. getOpenFileNames():选择多个文件打开,返回文件的完整路径列表。
  3. getSaveFileName():选择单个文件保存,返回文件的完整路径。
  4. getExistingDirectory():选择一个目录打开,返回目录的完整路径。

QFileDialog的常见用法是在QPushButton的clicked信号或QAction的triggered信号的槽函数中打开对话框,例如:

from PyQt5.QtWidgets import *
import sys


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setup_ui()

    def setup_ui(self):
        self.widget = QWidget()
        self.setCentralWidget(self.widget)

        vbox = QVBoxLayout(self.widget)

        btu1 = QPushButton('选择单个文件')
        btu2 = QPushButton('选择多个文件')
        btu3 = QPushButton('选择单个目录')

        btu1.clicked.connect(self.Select_a_single_file)
        btu2.clicked.connect(self.Select_multiple_files)
        btu3.clicked.connect(self.Select_a_single_directory)

        vbox.addWidget(btu1)
        vbox.addWidget(btu2)
        vbox.addWidget(btu3)

    # 选择单个文件
    def Select_a_single_file(self):
        file_path, _ = QFileDialog.getOpenFileName(self, "选择文件", "", "All Files (*)")
        if file_path:
            print(file_path)

    # 选择多个文件
    def Select_multiple_files(self):
        file_paths, _ = QFileDialog.getOpenFileNames(self, "选择文件", "/", "Excel文件 (*.xlsx *xls);;Word文件 (*.docx)")
        if file_paths:
            print(file_paths)

    def Select_a_single_directory(self):
        dir_path = QFileDialog.getExistingDirectory(self, "选择目录", "F:/", QFileDialog.ShowDirsOnly)
        if dir_path:
            print("选择的目录路径:", dir_path)


if __name__ == '__main__':

    app = QApplication(sys.argv)

    window = MainWindow()
    window.show()

    sys.exit(app.exec_())

注意:在QFileDialog中,我们可以使用斜杠 “/” 指定对话框中显示的起始目录。在这个例子中,"/" 表示从文件系统的根目录开始展示文件选择对话框。""表示从当前目录开始展示文件选择对话框。实际上,你可以根据需要将起始目录更改为你想要的任何有效路径,例如当前工作目录、特定目录结构等。

运行结果:
在这里插入图片描述

  • 选择单个文件
    • 点击“选择单个文件”后,从当前目录打开文件选择对话框。
      在这里插入图片描述
      在这里插入图片描述
  • 选择多个文件
    • 点击“选择多个文件”后,从根目录打开文件选择对话框。
      在这里插入图片描述
      在这里插入图片描述
  • 选择单个目录
    • 点击“选择单个目录”后,从F盘打开文件选择对话框。
      在这里插入图片描述
      在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1377313.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Spring Boot+Vue的课堂管理系统(前后端分离)

该项目完全免费 介绍 基于Spring BootVue的课堂管理系统。前后端分离。包含教师授课管理、学生选退课、聊天室、签到、笔记管理模块等。 技术架构 SpringBoot MyBatis Redis WebSocket VueCLI Axios Element UI 项目特点: 1、后台使用MyBatis连接数据库&…

Ubuntu root 远程登录失败

背景:设置了两个系统用户:root、test;test可以登录,可以使用su 命令切换root用户登录成功; 但是直接用root登录,会报错。 查看登录日志的方法: 需要两个远程窗口,在第一个远程窗口…

细说DMD芯片信号-DLP3

1, Block diagram 2. 信号介绍 2.1, LS interface: LD_Data_P/N(i), LD_CLK_P/N(i), LS_RDATA_A_BIST(O) 2.2, 视频信号: HSSI(High speed serial interface) High speed Differential Data pair lan A0~7 P/N, High speed Differential Clock A High…

Android音频框架之一 详解audioPolicy流程及HAL驱动加载与配置

一、 AndroidRuntime.so 引发思考 android 系统 framework 代码起点, frameworks/base/core/jni/AndroidRuntime.cpp 文件, 此文件是android系统主线程代码,代码内容涉及系统很多模块,此程序主要是注册模块的JNI接口方法。其中涉及到模块 na…

【计算机组成-计算机基本结构】

课程链接:北京大学陆俊林老师的计算机组成原理课 1. 电子计算机的兴起 原因:二战对计算能力的需求世界上第一台通用电子计算机 ENIAC(Electronic Numerical Integrator And Computer):时间:1946&#xff1…

Java Swing 图书借阅系统 窗体项目 期末课程设计 窗体设计

视频教程: 【课程设计】图书借阅系统 功能描述: 图书管理系统有三个角色,系统管理员、图书管理员、借阅者; 系统管理员可以添加借阅用户; ​图书管理员可以添加图书,操作图书借阅和归还; 借…

figma导入psd实战笔记

最近发现figma特别好用 并且插件生态特别庞大 如 将设计图转成vue react react-native 项目 flutter 项目 最重要的是 可以集成vscode 插件使用 使用蓝湖久了 感觉蓝湖 有写繁琐 同事扩展功能有限 Figma: The Collaborative Interface Design ToolFigma is the leading collabo…

C++——STL标准模板库——容器详解——list

一、基本概念 (一)定义 list:双向链表。list是一种分布式存储的线性表,每个节点分为数据域和指针域,其中指针域中包含一个指向前驱节点的指针和一个指向后续节点的指针,基本模型如下: &#…

【Docker】数据管理

🥳🥳Welcome 的Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Docker的相关操作吧 目录 🥳🥳Welcome 的Huihuis Code World ! !🥳🥳 前言 一.数据卷 示例演示 示例剖析…

three.js 学习笔记(学习中1.10更新) |

文章目录 three.js 学习笔记基础概念透视相机 第一个three.js应用threejs画布尺寸和布局canvas画布宽高度动态变化 坐标辅助器 THREE.AxesHelper实现动画效果requestAnimationFrame时间相关属性和方法 THREE.Clock类 相机控件 轨道控制器OrbitControls 灯光点光源点光源辅助观察…

CentOS查看修改时间

经常玩docker的朋友应该都知道,有很多的镜像运行起来后,发现容器里的系统时间不对,一般是晚被北京时间8个小时(不一定)。 这里合理怀疑是镜像给的初始时区是世界标准时间(也叫协调世界时间)。 有…

美团2024届秋招笔试第一场编程真题(js版本)

1.小美的外卖订单 简单的加法逻辑,需要注意的是各个数据的边界问题 折扣价不能超过原价减的价格不能超过满的价格满减优惠仅限原价购入 const rl require("readline").createInterface({ input: process.stdin }); void (async function () {let count…

NVIDIA深入理解之pynvml库

一、前言 写在前面 该文章是对我之前文章《Fedora上安装NVIDIA闭源显卡驱动》的一个拓展,正好寒假闲的没事干不如加深一下对NVIDIA的了解。Python是当前非常流行的一门编程语言,它以kiss为设计思想,能封装就能封装,给用户提供比…

Java封装了一个自适应的单位转换工具类

目录 前言 1、前期准备 2、实现代码 2.1 方法一:通过map去标记需要转换的 类属性字段 2.2 方法二:配合自定义注解 前言 平时在做项目中,经常会做一些数据书籍,尤其像是数据看板之类,需要从数据库中查询想要的数据…

这是一家有图书馆的公司

Tubi 技术团队的同事们,除了爱写书、翻译书,也很爱读书。应广大爱书人号召,Tubi 中国团队从 2018 年 7 月开始兴建 Tubi 小书架,迄今已建成了一个有着17 种类别、近 500 本藏书、100 位常驻借阅成员、以音视频开发、广告推荐和团队…

固态继电器SSR光耦OR-806A ,对标替代AQW212

固态继电器 VL60V输出端击穿电压光耦 高隔离电压 60 至 600V 输出耐受电压 工业温度范围:-40 to 85℃ 高灵敏度和高速响应 特征 输入和输出之间的高隔离电压 (Viso:5000 V rms)。 控制低电平模拟信号 高灵敏度和高速响应 …

Neo4j备份

这里主要讲Neo4j在windows环境下如何备份,Linux环境同理 Neo4j恢复看这里:Neo4j恢复-CSDN博客 Step1:停服 关闭neo4j.bat console会话窗口即可 Step2: 备份 找到数据目录,并备份、压缩 copy即可 data - 20240108.7z Step3: 启动服务 进入命令行&am…

【动态规划】20子数组系列_环形子数组的最大和_C++(medium)

题目链接:leetcode环形子数组的最大和 目录 题目解析: 算法原理 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 编写代码 题目解析: 题目让我们求返回 nums 的非空 子数组 的最大可能和 这道题如果是按照-这道题-是不对…

MySQL数据被误删怎么办?

文章目录 前言数据备份恢复工具数据备份策略数据备份恢复演示备份数据模拟数据误删恢复备份的数据恢复未备份的数据 总结 前言 很多年前,被公司外派到一家单位驻场开发一个OA项目,两个开发对接各部门的需求,需求还要及时生效(一边…

usb转i2c无需代码实现

总体思路 usb 转 ttl ttl转i2c 因此可以使用普通的串口调试助手进行。 同时也避免了自己写程序的麻烦。 关键芯片 参考资料 SC18IM700_4_20191009.fm (szlcsc.com)https://atta.szlcsc.com/upload/public/pdf/source/20221014/7E6E1261944FE14AC40A431139B6E16B.pdf …