【PyQt】15-让控件支持拖拽工作

文章目录

  • 前言
  • 一、控件的拖拽-setAcceptDrops()
    • 1.1 代码
    • 1.2 运行结果
  • 总结


前言

允许控件的拖拽操作,后续可以升级为拖拽图片之类的。hasHtml()、hasUrls()、hasImage()


一、控件的拖拽-setAcceptDrops()

比如把A放到B,需要两步
B—setAcceptDrops(True) # 允许接收
A—setDragEnabled(True) # 允许拖拽

B还需要设置两个事件:
1、dragEnerEvent 将A拖到B触发
2、dropEvent 在B的区域放下A时触发

1.1 代码

'''
#Author :susocool
#Creattime:2024/2/22
#FileName:038-让控件支持拖拽动作
#Description: 将控件A拖拽到B控件里面
'''
import sys,math
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *# 自定义的下拉列表类,继承自 QComboBox
class MyComboBox(QComboBox):# 类的初始化方法def __init__(self):super().__init__()self.setAcceptDrops(True)  # 设置下拉列表控件允许接受拖拽操作# 拖拽进入事件处理方法def dragEnterEvent(self, e):print(e)# 如果拖拽操作中包含文本,则接受该拖拽操作,否则忽略该操作if e.mimeData().hasText():e.accept()else:e.ignore()# 放下事件处理方法,将拖拽操作中的文本添加到下拉列表中def dropEvent(self, e):  # 松开鼠标时self.addItem(e.mimeData().text())# 自定义的窗口类,继承自 QWidget
class DrapDropDemo(QWidget):# 类的初始化方法def __init__(self):super(DrapDropDemo, self).__init__()self.setWindowTitle('拖拽窗口')  # 设置窗口标题为“拖拽窗口”formLayout = QFormLayout()  # 创建一个QFormLayout布局label = QLabel('请将左边的标签拖拽到右边的下拉列表中')  # 创建一个标签,并设置文本lineEdit = QLineEdit()lineEdit.setDragEnabled(True)  # 设置输入框允许进行拖拽操作combo = MyComboBox()  # 创建一个自定义的下拉列表formLayout.addRow(label)  # 将标签添加到布局中formLayout.addRow(lineEdit, combo)  # 将输入框和下拉列表组合添加到布局中self.setLayout(formLayout)  # 设置窗口的布局为formLayoutif __name__ == '__main__':app = QApplication(sys.argv)  # 创建一个QApplication实例main = DrapDropDemo()  # 创建一个DrapDropDemo实例main.show()  # 显示窗口sys.exit(app.exec_())  # 运行应用程序的主事件循环,直到窗口关闭并退出

关于dragEnterEvent(self, e):
self 表示类的实例,即指向当前类的对象。self 使用是为了在类的方法中引用类的属性和方法。通过 self,可以访问到类中的其他方法和属性。

这是 Python 的约定,表示实例本身。在调用该方法时,Python 会自动将实例作为第一个参数传递给该方法。这样就可以通过 self 来访问实例的属性和方法,以及在方法内部操作实例。

具体来说,在类中定义方法时,第一个参数通常是 self,这样在调用该方法时,Python 会将类的实例作为第一个参数自动传递给方法。这样可以确保在定义的方法内部可以访问到实例的属性和方法。

而 e 是一个参数名,此处的 e 是在 dragEnterEvent 方法的定义中指定的。e 可以是任意合法的变量名,并不是固定的。在事件处理函数中,e 通常表示事件对象,即传递给方法的事件相关信息。

在代码中,self 用于引用类的实例,而 e 用于引用事件对象,这样可以在方法中操作当前实例的属性和方法,并根据事件对象获取和处理事件的相关信息。每次在调用 dragEnterEvent 方法时,会将实际的事件对象作为参数传递给该方法,并在方法中使用 e 来引用该事件对象。

1.2 运行结果

选中、拖拽
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


总结

这篇文章依旧没有总结

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

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

相关文章

深入学习TS的高阶语法(泛型、类型检测、内置工具)

文章目录 概要一.TS的类型检测1.鸭子类型2.严格的字面量类型检测 二.TS的泛型1.基本使用2.传递多个参数3.泛型接口4.泛型类5.泛型约束6.映射类型(了解) 三.TS的知识扩展1.模块的使用-- 内置类型导入 2.类型的查找3.第三方库的类型导入4.declare 声明文件…

【单片机】使用AD7606+AD698芯片读取RVDT角位移

接上文,经过第一阶段的AD2S1210测量旋转变压器的角位移之后,现在用AD698来进一步的加强验证,目前网上有关于这方面的研究资料还是挺少的。   AD698是美国ADI公司生产的单片式线性位移差分变压器信号调节系统。将AD698与RVDT/LVD…

ctfshow MISC 2023愚人杯做题笔记

2023愚人杯 1.奇怪的压缩包 下载的题目压缩包是ZIP伪加密,修改后,解开得一个图片文件black.png。使用01编辑器打开,发现尾部有一个压缩包。 把尾部的压缩包另存后,发现该压缩包为加密包。再用01打开,发现尾部有一个b…

日常工作软件安装总结

日常工作软件安装总结 系统服务安装集成 Skywalking SpringBoot集成Skywalking服务 地址:http://192.168.1.52:8686/general nohup java -javaagent:/mnt/skywalking-agent/skywalking-agent/skywalking-agent.jar -DSW_AGENT_NAMEdev::rms-risk-service agent…

Web Serial API串口通信,实现web和electron扫码枪读取数据

文章目录 前言一、Serial API是什么?二、API使用步骤1.navigator.serial.requestPort()2.port.open(options)3.reader.read()4.port.close()其他常见API:完整代码 三、electron使用 前言 本文将讲述Web Serial API简单应用,以扫码枪为示例,通…

idea查找所有未使用的代码

1.背景 最近在做无用代码下线的时候发现一个方法里会引用很多个方法,一旦该方法删除以后,里面被引用的方法应该也一同下线,但是一个一个的找过去比较耗费精力,下面给大家推荐一个idea自带的代码分析工具 2.代码分析工具 Code-&…

【无标题】旋转链表与力扣报错:member access within null pointer of type ‘struct ListNode‘

项目场景: 做单链表反转题目,报错:member access within null pointer of type ‘struct ListNode’ 题目链接:LINK 问题描述 我明明在初始化指针时候,已经处理了n2->next情况却依然报错 这个报错提示含义是:大概就…

创新性3D数据合成模型,微软推出EgoGen

随着AR、VR等设备的广泛应用,第一人称的应用开始增多。但在研发方面面临不同的挑战,例如,图像模糊、视觉混乱、遮挡更严重等,给视觉模型的训练带来重大挑战。 一方面,人工标注真实第一视角数据集,来培训深度学习模型的成本和难度都很高。另一…

第八章 shell编程之sed

目录 1.1. 概念 1.1.1. 工作原理: 1.2. 基本语法 1.2.1. 格式 1.2.2. 参数 1.2.3. 定址符 1.2.4. 操作 1.3. 输出文本 1.3.1. 范例文件: 1.3.2. 示例 1.4. 文本替换 1.4.1. 范例文件 1.4.2. 格式: 1.4.3. 示例 1.5. 删除文本 …

提升生产能力的必备工具——MES系统自动排产

在现代制造业中,生产能力的提升对企业发展至关重要。随着市场竞争的日益激烈,企业不仅需要提高产品质量,还需要提高生产效率。而MES系统自动排产作为一种先进的生产管理工具,可以帮助企业高效地安排生产,实现生产能力的…

江科大stm32学习笔记——【3-2】GPIO输出:LED闪烁LED流水灯蜂鸣器

(一) 硬件连接 1.LED闪烁 LED灯正极连接面包板电源正极,LED负极连接单片机A0口 (也可以LED负极连面包板负极,LED正极连接单片机A0口) 跳线连接单片机3.3和面包板正极,连接单片机GND和面包板负极 2.LED流水灯 3.蜂鸣…

你并不了解 JavaScript:入门 - 第二版 - 第二章:JS 概观

第二章:JS 概观 学习 JS 的最好方法就是开始写 JS。 要做到这一点,你需要知道这门语言是如何工作的,而这正是我们在这里要重点讨论的。即使你以前用过其他语言编程,也要慢慢适应 JS,并确保练习每一块。 这一章并不是…

自学黑客的这些坑千万别踩,不然就是在做无用功!

一、自学网络安全学习的误区和陷阱 1.不要试图先成为一名程序员(以编程为基础的学习)再开始学习 一般来说,学习编程不但学习周期长,而且实际向安全过渡后可用到的关键知识并不多 一般人如果想要把编程学好再开始学习网络安全往…

并发编程(3)JMM

5 共享模型之内存 本章内容 上一章讲解的 Monitor 主要关注的是访问共享变量时,保证临界区代码的原子性. 这一章我们进一步深入学习共享变量在多线程间的【可见性】问题与多条指令执行时的【有序性】问题 5.1 Java 内存模型 JMM 即 Java Memory Model&#xff…

SQL库操作

1、创建数据库 概念 创建数据库:根据项目需求创建一个存储数据的仓库 使用create database 数据库名字创建 数据库层面可以指定字符集:charset/character set 数据库层面可以指定校对集:collate 创建数据库会在磁盘指定存放处产生一个文件夹 创建语法 create …

六.生成makefile文件 并基于makefile文件编译opencv

1.点击【Generate】 生成makefile文件 2.进入目录下编译opencv源码,mingw32-make -j 8 3..编译出现报错 4.取消[WITH_OPENCL_D3D11_NV]选项,再次【configure】【generate】 然后再次编译:mingw32-make -j 8

【springblade】springblade(bladeX) 数据权限失效原因分析

文章目录 数据权限接口权限 前言:最近博主在按照bladeX官方文档 配置数据权限 结果发现失效了,网上搜了一下没找到合适的答案,本着求人不如求己的精神,自己调试了一下发现了问题所在,也大致看了一下bladeX的权限逻辑。…

这份攻略帮助你分分钟构建出“幻兽帕鲁游戏”极致体验【下】

在上一篇文章这份攻略帮助你分分钟构建出“幻兽帕鲁游戏”极致体验【上】中写了,极狐GitLab 将 terraform state 文件管理了起来。这篇文章将演示如何将所有的 terraform 文件存储到极狐GitLab 中,并且使用 CI/CD 自动实现 terraform 命令的执行。 在 D…

最简单方式把jar打包成Windows服务

废话 😢 将JAR文件转化为Windows服务是一种高效且常见的Java应用部署策略。这种转变赋予了Java应用程序在Windows操作系统上以无界面后台服务模式运行的能力,从而实现了持续、稳定且可靠的功能提供。这种部署方式不仅提升了应用的可用性&#xff0c…

re-迷宫题学习

re中的迷宫问题有以下特点: 在内存中布置一张 "地图"将用户输入限制在少数几个字符范围内.一般只有一个迷宫入口和一个迷宫出口 布置的地图可以由可显字符 (比如#和*)组合而成 (这非常明显, 查看字符串基本就知道这是个迷宫题了.), 也可以单纯用不可显的十六进制值进…