Python中PyQt5可视化界面通过拖拽来上传文件

:这个窗口提供了一个快速上传文件的小tips,如果需要对上传的文件进行进一步处理的可以在“processFiles”函数或者编写其它函数进行扩充就可以。

1、需要安装模块

pip install PyQt5

2、运行效果

        1、通过拖拽的方式上传需要的文件到窗口,会直接获取到它的路径并显示出来

        2、提交文件后,可以获取窗口内的所有文件路径,并且以列表的形式存储

3、python代码

        在代码里都有详细的注释;这里就不做过多的说明

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit, QPushButton, QVBoxLayout, QWidget,QDesktopWidget
'''
#1、使用以下代码中的文件拖拽功能,只需将文件或文件夹拖拽到文本编辑框中即可。如果文件是本地文件,它们将以文件路径的形式显示在文本编辑框中。
#2、如果你想要进一步处理这些文件路径,比如复制、移动、读取或执行其他操作,你可以在 processFiles 方法中添加你的自定义代码,该方法在用户点击提交按钮后被调用。在该方法中,你可以访问文本编辑框的内容,将其拆分成文件路径,并执行相应的操作。
'''
#使用子类来继承父类的方法,这里的’DragDropTextEdit‘,继承自  ’QTextEdit‘ ,并且添加了文件拖拽的支持。
#这使得你可以将它用作拖拽文件的目标,以便在应用程序中方便地处理文件路径。
class DragDropTextEdit(QTextEdit):def __init__(self, parent=None):super(DragDropTextEdit, self).__init__(parent)self.setAcceptDrops(True)        #定义的 DragDropTextEdit 类的构造函数中调用的方法,它的作用是启用该文本编辑框接受拖拽操作。#当用户拖拽文件或其他可拖拽的内容进入文本编辑框时,这个方法会被触发def dragEnterEvent(self, event):if event.mimeData().hasUrls():  #它检查拖拽事件中的 MIME 数据是否包含文件路径event.accept()   #如果包含文件路径,它调用 event.accept() 来接受拖拽事件,允许文件拖拽进入文本编辑框。else:                        #否则,如果不包含文件路径,它调用 event.ignore() 来忽略拖拽事件,表示不允许拖拽操作。event.ignore()def dropEvent(self, event):   #当用户释放鼠标按钮时,这个方法会被触发,用于处理拖拽事件。在这个方法中,你可以获取拖拽事件中的文件路径。for url in event.mimeData().urls():   #使用 event.mimeData().urls() 来获取所有拖拽事件中的 URL 列表,每个 URL 表示一个文件或文件夹。if url.isLocalFile() and url.toLocalFile():  #使用 url.toLocalFile() 来获取本地文件路径,如果是本地文件的话。self.append(url.toLocalFile())   #接下来,你可以将这些文件路径添加到文本编辑框中,或者进行任何你希望执行的处理。
class MainApp(QMainWindow):  #创建实例化类def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle('文件拖拽窗口')   #设置主窗口的标题为 "文件拖拽窗口"。# 获取屏幕的宽度和高度screen = QDesktopWidget().screenGeometry()screenWidth = screen.width()screenHeight = screen.height()# 计算窗口居中的坐标x = (screenWidth - self.width()) // 2y = (screenHeight - self.height()) // 2#设置窗口大小已经出现在屏幕的什么位置self.setGeometry(x, y, 600, 400)  #设置主窗口的初始位置和大小。 (x, y)是设置窗口出现的位置。窗口的宽度为 600 像素,高度为 400 像素。#初始化窗口排版模式central = QWidget(self)    #创建一个名为 central 的 QWidget(窗口中央部件),用于将其他小部件添加到主窗口的中央区域。self.setCentralWidget(central) #将 central 部件设置为主窗口的中央部分。这意味着所有其他小部件将放置在 central 部件中,以确保它们在窗口中间显示。display = QVBoxLayout(central) #创建一个垂直布局管理器 display,它将用于管理 central 部件中的小部件的位置和大小。垂直布局意味着小部件将按垂直方向排列。#窗口self.textEdit = DragDropTextEdit()  #####这里来实例化上面子类继承的内容DragDropTextEdit 的实例,并将其赋值给 self.textEdit 属性。这个文本编辑框支持文件拖拽功能。display.addWidget(self.textEdit) #将 self.textEdit 添加到垂直布局管理器 display 中#按钮self.submit_Button = QPushButton('提交文件', self)  #创建提交按钮的名称self.submit_Button.clicked.connect(self.processFiles) #给提交按钮绑定事件函数processFilesdisplay.addWidget(self.submit_Button)   #展示出提交按钮def processFiles(self):file_paths = self.textEdit.toPlainText().split('\n')# 这里添加处理文件的代码print("文件路径如下:", file_paths)def main():app = QApplication(sys.argv)ex = MainApp()ex.show()sys.exit(app.exec_())if __name__ == '__main__':main()

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

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

相关文章

图表控件LightningChart .NET中文教程 - 如何创建WPF 2D热图?(二)

LightningChart.NET完全由GPU加速,并且性能经过优化,可用于实时显示海量数据-超过10亿个数据点。 LightningChart包括广泛的2D,高级3D,Polar,Smith,3D饼/甜甜圈,地理地图和GIS图表以及适用于科学…

学习数分--简单案例1

业务背景:某服务类app,近期发现日新增用户数下滑明显。 具体描述:假设公司产品(一款本地服务类app),近期发现日新增用户数下滑明显。老板要求你分析:数据异动的原因是什么? #最开始…

Java 数据结构篇-二叉树的深度优先遍历(实现:递归方式、非递归方式)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 二叉树的说明 1.1 二叉树的实现 2.0 二叉树的优先遍历说明 3.0 用递归方式实现二叉树遍历 3.1 用递归方式实现遍历 - 前序遍历 3.2 用递归方式实现遍历 - 中序遍…

逻辑回归 使用Numpy实现逻辑回归

使用Numpy实现逻辑回归 sigmoid 函数 g ( z ) 1 ( 1 e − z ) g(z)\frac{1}{(1e^{−z} )} g(z)(1e−z)1​ # sigmoid 函数 def sigmod(z):return 1/(1np.exp(-z))线性计算与梯度下降 J ( θ ) − 1 m [ ∑ i 1 m y ( i ) l o g ⁡ ( h θ ( x ( i ) ) ) ( 1 − y ( i ) …

ROS 元功能包

ROS元功能包(Metapackage)是一种特殊的软件包,它本身并不包含任何可执行代码或数据文件。在ROS 1中,可以通过catkin_create_pkg命令创建元功能包。 相反,它的主要目的是作为一组相关功能包的集合或者依赖关系列表。使…

国标GB28181视频监控EasyCVR内网环境部署无法启动怎么办?

安防视频监控系统EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等,能对外分发RTMP、RTSP、HTTP-FLV、…

微信聊天窗口测试用例

以前没测过客户端的测试,昨天面试被问到聊天窗口测试场景设计,感觉自己答的不好,结束后上网查了一下客户端/app测试的要点,按照测试策略来分,主要涉及到如下测试类型: 1、功能测试 2、性能测试 3、界面测试…

GS016电动工具调速控制电路芯片,7V ~ 24V 7mA ~ 10mA具 有电源电压范围宽、功耗小、抗干扰能力强等特点

GS016是一款直流有刷电机调速电路,输出端内置14V钳位结构,具 有电源电压范围宽、功耗小、抗干扰能力强等特点。通过桥接内部电阻网 络,可以改变PWM占空比输出,达到控制电机转速作用。采用SOP14的封装形式封装。 主要特点&#xf…

Hadoop学习笔记(HDP)-Part.10 创建集群

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

ipad Google浏览器,使用默认搜索,页面使用pc模式

ipad Google浏览器,使用默认搜索,页面使用pc模式 1. 设置默认搜索引擎 2. 设置页面使用PC模式 参考:https://zhuanlan.zhihu.com/p/556041670

从零开始学习 JS APL(五):完整指南和实例解析

目录 学习目标: 学习内容: 学习时间: 学习内容: Window对象: 定时器-延时函数: JS 执行机制: location对象: 本地存储: 本地存储分类- localStorage&#xff1a…

OTN设备,ZXONE 9700,ZXMP M721

文章目录 ZXONE 9700分组OTN产品产品特点 ZXMP M721城域边缘OTN产品产品特点 ZXONE 9700分组OTN产品 ZXONE 9700系列产品,支持10G/40G/100G/400G传输速率,可实现28.8T/14.4T/9.2T/4.4T ODUk的大容量电层交叉和10G/40G/100G/400G波长的光层交叉及分组交换…

WordPress免费插件大全清单【2023最新】

WordPress已经成为全球范围内最受欢迎的网站建设平台之一。要让您的WordPress网站更具功能性、效率性,并提供卓越的用户体验,插件的选择与使用变得至关重要。 WordPress插件的作用 我们先理解一下插件在WordPress生态系统中的作用。插件是一种能够为Wo…

【云原生-K8s】检查yaml文件安全配置kubesec部署及使用

基础介绍基础描述特点 部署在线下载百度网盘下载安装 使用官网样例yamlHTTP远程调用安全建议 总结 基础介绍 基础描述 Kubesec 是一个开源项目,旨在为 Kubernetes 提供安全特性。它提供了一组工具和插件,用于保护和管理在 Kubernetes 集群中的工作负载和…

前端三段面试经历(字节、滴滴、虎牙),讲真的还挺难的

小编整理最近了小伙伴中具有代表性的面试经历及面试题,他们的情况小编就不多说了,一起看看他们面试中都遇到了什么问题。 字节一面 刚开始就问我的项目,问得很详细。 webpack 提高构建速度的方式loader 输入什么产出什么 ?webpac…

全光谱护眼灯好吗?考公用的台灯推荐

全光谱护眼台灯是近年来新兴的一种照明产品,其使用全光谱LED灯泡,能够模拟自然光的光谱,为人们提供更加舒适、柔和的照明环境。相比传统的白炽灯或荧光灯,全光谱护眼台灯在照明效果、节能环保、眼睛健康等方面都有着明显的优势。 …

mysql:免费的GUI客户端工具推荐并介绍常用的操作

给大家推荐几个常用的 mysql 数据库客户端 sequel-pro sequel-ace 官网下载地址 免费 sequel-ace 可以理解为 Sequel Pro 的升级版,由于Sequel Pro官方不维护了,特别是对 MySQL 8.0 支持不好,所以现在由社区维护了新分支 sequel-ace&#x…

生鲜蔬果展示预约小程序作用是什么

线下生鲜蔬果店非常多,对商家来说主要以同城生意为主,而在互联网电商的发展下,更多的商家会选择搭建私域商城进行多渠道的销售卖货和拓展,当然除了直接卖货外,还有产品纯展示或预约订购等需求。 但无论哪种模式&#…

【云原生 | Docker】Docker核心概念 应用上手最佳流程

🤵‍♂️ 个人主页: AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!&…

面试题:Java Switch 是如何支持 String 的,为什么不支持 long

目录 前言一、结论二、枚举类型是咋变成 int 类型的?三、String 类型是咋变成 int 类型的?四、它们的包装类型支持吗? 前言 我们知道Java Switch 支持byte、short、int类型,在JDK 1.5 时,支持了枚举类型,在…