pyqt界面支持拖拽文件
问题
之前使用pyqt写过一个升级工具, 使用的过程中发现每次通过文件选项框选择文件太过于麻烦,如果可以支持拖拽文件进入就简便很多,于是去查了一下更新了一下工具;
结果
因为我使用的组件是QLineEdit存放文件地址,因此为了支持重载,写了一个新的类,继承了QLineEdit,重载了两个关于拖拽的函数;新建文件MLineEdit.py
# -*- coding: utf-8 -*-
from PySide2.QtWidgets import QLineEditclass MLineEdit(QLineEdit):def __init__(self, title, parent):super().__init__(title, parent)self.setAcceptDrops(True)def dragEnterEvent(self, e):if e.mimeData().hasText():e.accept()else:e.ignore()def dropEvent(self, e):filePathList = e.mimeData().text()filePath = filePathList.split('\n')[0] #拖拽多文件只取第一个地址filePath = filePath.replace('file:///', '', 1) #去除文件地址前缀的特定字符self.setText(filePath)
然后在主窗口文件mainwindow.py
中from MLineEdit import MLineEdit
导入类;将原来文件地址栏的创建语句改为
class Ui_MainWindow(object):def setupUi(self, MainWindow): #中间其他语句省略,将地址栏对象的创建改为这个,后面的self.centralwidget是布局,根据你的实际项目来, ufn_lineEdit是组件名,根据实际来;self.ufn_lineEdit = MLineEdit("", self.centralwidget)
这是再进性编译测试发现,文件地址栏就可以支持拖拽了,如果你怕别人不知道你支持拖拽,可以再加一句self.ufn_lineEdit.setToolTip("可将固件拖入地址栏!")
;
参考文章
- PyQt - Drag & Drop
- Drag and Drop
pyqt界面支持拖拽文件相关推荐
- vue上传图片组件(支持拖拽文件夹上传)
点击打开源码 https://github.com/317482454/vue_upload 在线查看地址:http://jqvue.com/demo/vue_upload/demo.html 1.获 ...
- Windows界面直接拖拽文件到xshell界面实现文件传输
lrzsz是一款在linux里可代替ftp上传和下载的程序,上传速度比较慢适用于比较小的文件. 先利用yum命令安装lrzsz: yum install lrzsz 安装成功后就可以直接拖拽传输啦!
- PDF文件 支持拖拽盖章最后生成PDF文件
项目说明: 根据b站一位博主提供的源码改写了部分方便大家参考 git地址 https://gitee.com/kong-lingbin/pdf-seal-dragging 最终实现效果 需求: 凡pf ...
- LINUX:Ubuntu重装虚拟机后无法拖拽文件的解决方法
花了3小时尝试了网络上绝大部分方法解决无法拖拽文件的问题,在最后发现只是在错误的地方拖动文件,才导致一直不成功.在这里将安装vmtools遇到的问题和解决方法罗列出来供参考. 目录 实际解决方法(基于 ...
- VMware主机与虚拟机不能拖拽文件终极解决方法
VMware主机与虚拟机不能拖拽文件解决方法 主要问题根源在于你没有安装VMware Tools 只有在VMware虚拟机中安装好了VMware Tools,才能实现主机与虚拟机之间的文件共享,同时可 ...
- Java 拖拽文件到文本框
Java中如何把文件拖拽到文本框呢? 先看一个例子: 核心代码: Java代码 /*** * 拖拽文件到文本框 * @param component */ public void drag ...
- php 拖动多个文件上传,dropzone拖拽文件上传一次上传多个文件的方法
用dropzone插件拖拽文件上传默认情况是把一个文件拖到浏览器后就立即自动上传,参考前文<用dropzone插件拖拽文件上传>,如果需要一次上传多个文件怎么办?本文将介绍其实现方法. d ...
- win10安装vmware tools + 无法拖拽文件解决
1.加载VMware Tools安装光盘 打开虚拟机VMware Workstation,启动 Ubuntu 系统 菜单栏 - 虚拟机 - 安装VMware Tools. 2.将安装文件提取到本地磁盘 ...
- 在VMware中安装新版Ubuntu后,无法跨虚拟机复制粘贴和拖拽文件的解决方法
首先确保已经安装了VMware Tools: sudo apt install open-vm-tools 然后发现还是不能复制粘贴和拖拽文件?原因是Ubuntu(22.04,20.04等)默认启用了 ...
最新文章
- LeetCode - Maximum Depth of Binary Tree
- rrnDB数据库简介-16S基因多拷贝数的证据
- Introduction for i-Teams
- CCPC-Wannafly Winter Camp Day8 (Div2, onsite) 补题
- 解决outlook2013设置错误无法启动
- css设置字体颜色、文本对齐方式、首行缩进、文本装饰、列表样式、鼠标样式、禁止文本域拖拽、轮廓线、块级元素对齐方式、文字溢出设置
- BZOJ 2818GCD
- 成功安装完EASYPHP后,无法打开127.0.0.1页面的解决办法
- 识别速度3.6ms/帧!人像抠图、工业质检、遥感识别,用这一个分割模型就够了...
- 显示桌面图标不见了的解决方法
- ASP.NET2.0中实现图像转换过滤效果
- Linux学习笔记(8)
- php秒数倒计时,PHP精确到毫秒的秒杀倒计时范例
- PHP验证码代码_php验证码类
- 【Python】matplotlib plt显示中文乱码解决方法
- Android11不如,1200万像素的iPhone11真的不如4800万像素的安卓?
- 名字作诗,让你的名片更具有趣味性和个性化
- 怎么把excel表格转换成word格式
- [转]作为黑客的你应该拥有的10个小工具
- jmeter简单的接口请求
热门文章
- 30复习冠词 some和any
- AGL Specification简单记录
- Java基础入门笔记2
- 早教行业,前景可观的创业项目
- linux SIGSEGV信号
- day01 Linux
- 总结20220414
- python什么语句提前结束循环_在循环语句中,__________语句的作用是提前结束本层循环。...
- c语言中流,C语言中流控制语句.doc
- Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0