实现文件的拖放功能

news2024/11/25 12:57:45

文章目录

  • 实现文件的拖放功能
    • 1 拖放文件至QT窗口
      • 1.1 实现方法
      • 1.2 效果演示
    • 2 拖放文件至python脚本
      • 2.1 实现方法
      • 2.2 效果演示

实现文件的拖放功能

试想一下,我们希望将一个python项目文件夹或者脚本在IDE中打开,无论是去IDE中选择文件夹路径,还是选择脚本的打开方式,都需要花点力气去点击选中。再或者,我们想要在命令行下运行python脚本,并且需要传入一个文件路径参数,手敲路径还是挺麻烦的。要是上述这些情况能用拖放文件的方式代替,毋庸置疑是方便且轻松的。

PS:下面介绍的方法只在Windows下测试成功。

1 拖放文件至QT窗口

为了给QT窗口添加拖放文件至窗体内并执行操作的功能,这里举一个例子。我们写了一个简单的三维模型文件可视化软件,即使软件中有“打开文件”的选项,但是在有些情况下还是很麻烦。我们希望能够将模型文件直接拖进软件的窗口内进行可视化绘制。

1.1 实现方法

参考这篇文章:Qt主窗口实现拖拽文件,显示到文本框

在窗口初始化函数中添加一行

self.setAcceptDrops(True)  # 设置接受拖拽

然后重写dragEnterEventdropEvent两个方法

    def dragEnterEvent(self, a0: QtGui.QDragEnterEvent) -> None:  # 拖动进入事件
        if a0.mimeData().hasUrls():
            a0.acceptProposedAction()
        else:
            a0.ignore()

    def dropEvent(self, a0: QtGui.QDropEvent) -> None:  # 放下事件
        mimeData = a0.mimeData()
        if mimeData.hasUrls():
            urlList = mimeData.urls()
            filename = urlList[0].toLocalFile() # 得到了文件的路径
            if filename: # 下面便是对文件的相关操作
                # 绘制图形
                _, suffix = os.path.splitext(filename)
                self.SceneManager.ClearAll()
                if suffix == '*.xyz':  # 点云绘制
                    self.original_model = read_xyz(filename)
                    self.SceneManager.drawPdSrc(self.original_model, (241 / 255, 135 / 255, 184 / 255), point_size = 3)
                else:
                    self.original_model = ReadPolyData(filename).GetOutput()
                    self.SceneManager.drawPdSrc(self.original_model)
                self.SceneManager.display()

1.2 效果演示

请添加图片描述

2 拖放文件至python脚本

已知在windows系统中,python脚本文件为.py文件,该文件是不支持拖放其他文件到其上的。我们希望实现将其他文件拖放到脚本文件上,作为其输入参数,并运行脚本。

2.1 实现方法

新建一个pyfile_droppable.reg文件,输入以下内容并保存:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Python.File\shellex\DropHandler]
@="{60254CA5-953B-11CF-8C96-00AA00B8708C}"

[HKEY_CLASSES_ROOT\Python.File\Shell\open\command]
@=""<python interpreter path>" "%L" %*"

双击运行此文件,完成注册表相关信息的添加。相关原理参考:Make Python Scripts Droppable in Windows。

上面这个reg文件添加了两个项到注册表中,第3、4行的作用是使python脚本文件能接收拖放到它上面的文件(获取文件的路径),第6、7行的作用是指定运行python脚本的解释器路径。通过打开注册表查看发现,我们主要修改了下图中的两个地方。

image-20230814235158901

接着,我们新建一个测试脚本droppable_test.py,内容如下

import os
import sys

py_dir = os.path.dirname(__file__)  # 当前脚本所在的目录
result_path = os.path.join(py_dir, 'result.txt')  # 生成的结果文件放在脚本目录下
args = sys.argv
# 合并内容并生成新文件
with open(args[1], 'rb') as f:
    data1 = f.read()
with open(args[2], 'rb') as f:
    data2 = f.read()
with open(result_path, 'wb') as f:
    f.write(data1 + data2)
    print("文件合并成功!结果文件保存至:" + result_path)
input("按任意键关闭窗口...")

2.2 效果演示

请添加图片描述

注意多个文件作为参数传入py脚本的顺序为选中多个文件的顺序,即从上到下,从左到右。

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

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

相关文章

神经网络基础-神经网络补充概念-08-逻辑回归中的梯度下降算法

概念 逻辑回归是一种用于分类问题的机器学习算法&#xff0c;而梯度下降是优化算法&#xff0c;用于更新模型参数以最小化损失函数。在逻辑回归中&#xff0c;我们使用梯度下降算法来找到最优的模型参数&#xff0c;使得逻辑回归模型能够更好地拟合训练数据。 逻辑回归中的梯…

.Net 6启用SDK声明隐式全局引用

之前要引用System.xxx相关的组件时&#xff0c;需要每个页面都using&#xff0c;后来出了global using但每个项目还是要添加上&#xff0c;比较麻烦。 现在只需要在项目属性里&#xff0c;勾选以下“隐式全局使用”选项即可免于手动使用using引用这些系统的SDK相关组件。 也可…

成都市加快大模型创新应用,推动人工智能产业高质量发展

在2023年8月份&#xff0c;成都市发布了《成都市加快大模型创新应用推进人工智能产业高质量发展的若干措施》&#xff0c;这些措施为成都市在人工智能领域的发展指明了方向&#xff0c;为产业的高质量发展提供了政策支持和创新环境。 这些措施的积极意义不言而喻。首先&#xf…

电脑——IT人必不可少的重要武器

电脑——IT人必不可少的重要武器 我的战友我的维护硬件软件杀毒软件 有用技巧需要避免的行为其他补充 我的战友 我的“战友”是联想台式机&#xff0c; W i n 10 Win10 Win10的操作系统&#xff0c;它的内存仅有 8 G B 8GB 8GB&#xff0c; C P U CPU CPU也只是 i 5 i5 i5&…

通过css设置filter 属性,使整个页面呈现灰度效果,让整个网页变灰

通过css设置filter 属性设置页面整体置灰 效果图: 通过设置 filter 属性为 grayscale(100%)&#xff0c;页面中的所有元素都会被应用灰色滤镜效果&#xff0c;使整个页面呈现灰度效果。 <style type"text/css"> html { filter: grayscale(100%); -webkit-f…

离线安装.NET Framework 3.5

下载资源包 链接&#xff1a;https://pan.baidu.com/s/1t7OlEXwNDV8YtA7-YuQRSw 提取码&#xff1a;qe8i 解压 NetFx3.cab 文件 然后管理员方式打开cmd命令窗口 dism.exe /online /add-package /packagepath:C:\你的解压路径\NetFx3 里面输入你解压好的文件夹路径 等待添加…

如何做好商务英语翻译,商务英语的翻译方法有哪些

我们知道&#xff0c;商务英语涉及贸易、商务、营销财务等信息&#xff0c;呈现出的语言专业性强&#xff0c;翻译力求专业化。那么&#xff0c;如何做好商务英语翻译&#xff0c;商务英语的翻译方法有哪些&#xff1f; 业内人士指出&#xff0c;为了做好商务英语翻译&#xff…

正中优配:炒股如何降低成本?有什么技巧?

众所周知&#xff0c;股票交易是需要收取各式各样的手续费或许其他费用的&#xff0c;所以假如能够下降交易本钱是出资者炒股时着重考虑的问题。那么炒股如何下降本钱&#xff1f;有什么技巧&#xff1f;下面就由正中优配为我们剖析&#xff1a; 下面是下降炒股交易本钱的方法&…

安卓逆向 - 某严选app sign算法还原

本文仅供学习交流&#xff0c;只提供关键思路不会给出完整代码&#xff0c;严禁用于非法用途&#xff0c;若有侵权请联系我删除&#xff01; 目标app: 5ouN5ouN5Lil6YCJMy45LjY 目标接口&#xff1a;aHR0cHM6Ly9hcGkubS5qZC5jb20vYXBp 一、引言 1、本篇分析某二手交易平台 …

常见的功耗曲线预处理方法

滤波 电子设备的功耗信息可以由电路运行时的电压、电流和电路的阻抗联合计算得到&#xff0c;而且纯电阻运行期间的功耗会转换为热能。在研究中&#xff0c;一个器件的功耗与整个加密设备的功耗成正相关&#xff1b;若该期间的功耗增加&#xff0c;则整个加密设备的功耗也成一定…

具身智能:融合感知、思考与行动的未来之路

在当今科技飞速发展的时代&#xff0c;具身智能&#xff08;Embodied Intelligence&#xff09;作为一种新兴的概念&#xff0c;引起了广泛的关注和研究。具身智能将感知、思考和行动紧密结合起来&#xff0c;为机器人和智能系统带来了前所未有的能力和潜力。本文将介绍具身智能…

python基础05 循环 变量 函数组合案例

目录 1. 前言: 2. 案例详情: -> 2.1 案例拆解 ---> 2.1.1 主页功能: ---> 2.1.2 查余额: ---> 2.1.3 存钱 ---> 2.1.4 取钱 ---> 2.1.5 返回首页重试[可有可无] ---> 2.1.6 退出 3. 实现代码(python版) 4. 运行结果: -> 4.1 文字式 想写…

okcc对接ASR平台,okcc客户投诉的安全问题

客户投诉: 客户为什么要投诉&#xff1f;实际上分为两种情况&#xff0c;一是客户被冒犯到不能容忍导致的投诉&#xff0c;二是恶意投诉。降低客户被冒犯投诉的概率&#xff0c;无非就是选择客户、规范用语、降低频度&#xff1b;减少恶意投诉&#xff0c;回避是实践证明最有效…

飞行动力学-第16节-part1-机动飞行中的稳定性 之 基础点摘要

飞行动力学-第16节-part1-机动飞行中的稳定性 之 基础点摘要 1. 机动2. 重心位置3. 翼载荷4. 参考资料 1. 机动 法向过载( n L W n\frac{L}{W} nWL​)超过1的飞行轨迹。 铅垂面的拉升机动水平面内的协调转弯 根据叠加原理&#xff0c;分解为&#xff1a; 定常拉升 平飞 …

数字孪生,HDR如何提取

现在有很多的地方使用全景图&#xff0c;这些全景图是动态展示的720图片&#xff0c;无法通过浏览器点击下载到本地。 今天给你们安利一款好用的、免费的、可下载720全景图的网站。 步骤一 打开这个网址https://krpano.scenegram.cn/&#xff08;全景管家&#xff09;&#xf…

十一、避开客户端控件——收集用户数据

文章目录 一、HTML表单1.1 长度限制1.2 基于脚本的确认1.3 禁用的元素 二、浏览器拓展2.1 常见的浏览器拓展技术2.2 攻击浏览器扩展的方法 一、HTML表单 应用程序使用客户端控件限制客户端提交的数据的另一个主要控制对象&#xff0c;是由客户端计算机自己收集的数据。 HTML表单…

win11如何去掉桌面快捷方式的小箭头(原创)

begin 打开注册表,Windows搜索框里搜 注册表编辑器(register editor),打开.. 找到 接着跟进.. 新建一个项名, Shell Icons 继续.... 值设为29 双击开页面 输入数据 %windir%\System32\shell32.dll,-51 到此,保存,到桌面,小箭头还是没有消失 ctrl shift esc 打开 任务管理…

Java课题笔记~ SpringMVC注解式开发

2.1 Controller 传统的配置式开发中的控制器Controller类必须实现Controller接口&#xff0c;并实现接口中的HandleRequest()方法&#xff0c;还需要再配置文件中配置处理器映射&#xff0c;且一个处理器&#xff08;控制器&#xff09;只能有一个方法&#xff0c;为了实现程序…

创建预留成本中心与指定工厂不一致

创建预留成本中心与指定工厂不一致 这种情况SAP会警告提示&#xff0c;可以强制通过。 如果公司不允许跨公司领料&#xff0c;可以将消息号 M7517的类型从W改为为E tcode&#xff1a;OMCQ SPRO->物料管理->库存管理和实际库存->定义系统消息的属性->系统信息设置

如何快速便捷收集市场信息?电商API来帮你

电商API&#xff08;Application Programming Interface&#xff0c;应用程序编程接口&#xff09;是为了促进不同电商平台之间数据共享和交互而设计的一种技术。通过使用电商API&#xff0c;可以快速便捷地收集市场信息&#xff0c;提升电商运营效率&#xff0c;增加竞争力。 …