【Python】文件拖放(drag and drop)并获取文件信息

这篇具有很好参考价值的文章主要介绍了【Python】文件拖放(drag and drop)并获取文件信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

QWidget 对象支持拖放,拖拽文件到窗口时触发拖拽事件,拖拽时触发的几个事件函数:

dragEnterEvent:当拖动动作进入窗口时触发该事件

dragLeaveEvent:当拖动动作离开窗口时触发该事件,离开窗口时没有mimeData数据对象

dragMoveEvent:当拖动不放在窗口移动时触发该事件

dropEvent:当拖动文件到窗口松开鼠标的时候触发该事件,窗口外松开不触发,放置时可以根据需要过滤文件类型,拖放后event.mimeData().urls()上则返回一个多个QUrl类型的实体,每一个QUrl中包含了每一个文件的路径,通过toLocalFile()可以获取到QUrl中包含的在当前系统上的全路径格式。

要支持拖放,必须设置当前部件是否支持拖放,方式如下:

setAcceptDrops(True)

acceptDrops()获取当前部件是否支持拖放

示例:

1,使用designer绘制界面,如下:

【Python】文件拖放(drag and drop)并获取文件信息,Python,python,开发语言

2,使用Python\Python3.10.2\Scripts\pyside6-uic.exe将ui文件转成py代码文件,配置和生成方式见 【Python】PyCharm配置外部工具

3,支持点击浏览按钮选择文件路径,支持拖拽文件路径放置

4, 完整代码如下,其中mainWindow 模块时pyside6-uic.exe生成的

import os
import sys

import PySide6
from mainWindow import *
from PySide6.QtWidgets import QApplication,QMainWindow,QFileDialog,QWidget
from PySide6 import QtCore

class MainWindos(QMainWindow):
    def __init__(self):
        super().__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.show()
        self.setAcceptDrops(True)
        self.file_path = ''
        self.EventListener()

    def EventListener(self):
        self.ui.pushButton_browse.clicked.connect(self.BrowseFilePath)

    def BrowseFilePath(self):
        print("BrowseFilePath")
        noe_path = os.getcwd()
        choice_file_path = QFileDialog.getOpenFileName(self, "选择文件", noe_path, "Excel files(*.xlsx *.xls)")
        print("choice_file_path", choice_file_path)
        if os.path.exists(choice_file_path[0]):
            self.file_path = choice_file_path[0]
            self.ui.lineEdit_path.setText(self.file_path)

    def dragEnterEvent(self, event:PySide6.QtGui.QDragEnterEvent) -> None:
        # 鼠标按住文件拖到界面窗口时进入该函数,在窗口外拖动不会打印
        # print("dragEnterEvent==>")
        if event.mimeData().hasUrls:
            event.accept()
        else:
            event.ignore()

    def dragLeaveEvent(self, event:PySide6.QtGui.QDragEnterEvent):
        print("dragLeaveEvent==>")

    def dragMoveEvent(self, event:PySide6.QtGui.QDragMoveEvent) -> None:
        # 拖动在窗口内移动打印,拖着停住在窗口内不打印
        # print("dragMoveEvent==>")
        if event.mimeData().hasUrls:
            try:
                event.setDropAction(Qt.CopyAction)
                pass
            except Exception as e:
                print(e)
            event.accept()
        else:
            event.ignore()

    def dropEvent(self, event:PySide6.QtGui.QDropEvent) -> None:
        # 在窗口内松开鼠标时进入,如果鼠标先拖着进窗口,后又拖着离开在松开鼠标,不打印
        print("dropEvent==>")
        if event.mimeData().hasUrls:
            event.setDropAction(Qt.CopyAction)
            event.accept()
            file_path = []
            for url in event.mimeData().urls():
                file_path.append(str(url.toLocalFile()))
            self.file_path = file_path[0]
            self.ui.lineEdit_path.setText(self.file_path)
            print(file_path)
        else:
            event.ignore()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = MainWindos()
    sys.exit(app.exec())

拖拽效果:

【Python】文件拖放(drag and drop)并获取文件信息,Python,python,开发语言

浏览选择效果:

【Python】文件拖放(drag and drop)并获取文件信息,Python,python,开发语言

 文章来源地址https://www.toymoban.com/news/detail-676537.html

 

到了这里,关于【Python】文件拖放(drag and drop)并获取文件信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python通过解压ofd文件获取发票信息

    Python通过解压ofd文件获取发票信息 实际上ofd、docx、xlsx等文件就是一个压缩文件,是可以被解压处理的。所以我们把一个ofd格式的发票文件解压后就可以看到它的目录,如下: 再用谷歌或者IE打开里面的xml属性的文件,就可以看到发票相关信息,如下: 所以获取发票信息的实

    2024年02月02日
    浏览(30)
  • Python3: 扫描库文件并获取版本号信息

    在 C/C++ 开发中使用了第三方库,具体说是 .a , .lib , .dll 等文件,想通过 Python 查询出这些文件中的版本号信息。 有人可能好奇,这里简单消除可能得疑虑: 为什么不用源代码,而用库? 因为库文件提供了良好的 隔离性 ,避免了繁杂的编译选项指定, 避免了潜在的不小心改

    2024年02月05日
    浏览(72)
  • 【Python】flask框架请求体数据,文件上传,请求头信息获取方式案例汇总

    ✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN新星创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开

    2024年03月22日
    浏览(28)
  • Python 微信自动化工具开发系列01_自动获取微信聊天信息(2023年9月可用)

    使用Python3的第三方库 wxauto , 它适用于Windows的微信客户端 官网: https://github.com/cluic/wxauto 这边使用 wxauto 来进行开发,而不是 itchat ,原因如下 itchat 都是之前的教程, 本质上是用的微信的网页端的接口来进行数据交互的。 如果你想要使用 itchat 的代码的话, 1、先测试下你的

    2024年02月07日
    浏览(30)
  • Python 获取公开信息

           大众点评店铺页面最大分页数是50页,要抓取信息就是通过区域、店铺类型分解到最小达到尽可能全的抓取。以成都餐饮为例,每种分类先取到最小,区域范围依次从成都到区县到街道,如果大区域该分类小于50页就可以抓取,否则继续分解。        大众的页面有时

    2024年02月07日
    浏览(17)
  • python获取网络信息

    任务描述 本关任务:用Python获取本机Mac地址并输出。 相关知识 为了完成本关任务,你需要掌握: 1.如何获取MAC地址; 2.如何处理字符串。 获取Mac地址 MAC地址也称物理地址,它是一个用来确认网络设备位置的地址。在OSI模型中,第三层网络层负责IP地址,第二层数据链接层则

    2024年02月03日
    浏览(21)
  • Python selenium获取元素信息

    视频版教程:一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium 主要text属性和三个方法get_attribute(),get_property(),get_dom_attribute() text属性获取元素的文本信息; get_attribute(),get_property(),get_dom_attribute()三个方法都是获取元素的属性值 区别是property是DOM中的属性,

    2024年02月06日
    浏览(30)
  • Python教程:如何用Python编写FOFA爬虫获取信息?

    部分数据来源: ChatGPT         在网络安全领域,信息收集是非常重要的一环。而网上许多公开的信息都是通过搜索引擎、在线查询等方式获取的。其中,FOFA 是一个非常优秀的互联网数据搜索引擎,可以通过搜索特定的来快速获取相关的数据。 虽然 FOFA 有很多强大

    2024年02月08日
    浏览(33)
  • Python通过SNMP获取设备信息

    Python中存在一个库:pysnmp,封装了与SNMP协议相关的操作。 本文对pysnmp做一个简单的、流于表面的实践,对其细节暂不作解释。 首先需要安装pysnmp: 在使用它的时候,导入这个库: 然后,封装一个Snmp类好了。 接下来就尝试用它来获取一个系统名称sysName。 需要注意的是,

    2024年02月10日
    浏览(29)
  • python 实时获取kafka消费队列信息

    安装 pykafka

    2024年02月16日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包