PyQt5之Drag拖曳功能

在很多桌面应用程序中,复制或移动对象都可以通过拖曳来完成。基于MIME类型的拖曳数据传输是基于Drag类的。QMimeData对象将关联的数据与其对应的MIME类型相关联。

一、MIME类型

MIME类型的数据可以简单理解为互联网上的各种资源,比如文本、音频和视频资源等,互联网上的每一种资源都属于一种MIME类型的数据。

判断函数 设置函数 获取函数 MIME类型
hasText() text() setText() text/plain
hasHtml() html() setHtml() text/html
hasUrls() urls() setUrls() text/uri-list
hasImage() imageData() setImageData() image/*
hasColor() colorData() setColorData() application/x-color

二、常用的拖曳事件

事件 描述
DrafEnterEvent 当执行一个拖曳控件操作,并且鼠标指针进入该控件时,这个事件将被触发。在这个事件中可以获得被操作的窗口控件,还可以有条件地接受或拒绝该拖曳操作
DrafMoveEvent 在拖曳操作进行时会触发该事件
DrafLeaveEvent 当执行一个拖曳控件操作,并且鼠标指针离开该控件时,这个事件将被触发
DropEvent 当拖曳操作在目标控件上被释放时,这个事件将被触发

三、拖曳功能

import sys,math
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *class LineEdit(QLineEdit):def __int__(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.setText(e.mimeData().text())class Win(QWidget):def __init__(self):super().__init__()self.setGeometry(300, 300,400, 380)self.setWindowTitle('拖曳功能')label = QLabel('请把左边的文本拖曳到右边的下拉菜单中')edit = QLineEdit()edit.setDragEnabled(True) #允许拖曳其中的内容l = LineEdit()layout = QFormLayout()layout.addRow(label)layout.addRow(edit,l)self.setLayout(layout)if __name__ == "__main__":app = QApplication(sys.argv)form = Win()form.show()sys.exit(app.exec_())

代码分析:dragEnterEvent()会验证事件的MIME数据是否包含字符串文本,如果包含字符串文本,就接收事件提出的添加文本操作,并将文本作为作为新条目添加到ComboBox控件中,否则忽略此次操作。

运行效果如下:

PyQt5之Drag拖曳功能相关推荐

  1. javascript实现简单拖曳功能

    欢迎访问我的博客https://qqqww.com/,祝码农同胞们早日走上人生巅峰,迎娶白富美~~~ 文章目录 1 场景 2 实现 1 场景 想必大家对这一类场景很熟悉,QQ登陆面板跟着鼠标的拖动,鼠 ...

  2. js 拖曳功能--代码解析

    这一章解决的问题 1.怎样在网页中实现拖曳功能. 2.document.documentElement与document.body的区别. document.documentElement.clien ...

  3. pyqt5中控件缩放功能_python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例...

    PyQt5动态(可拖动控件大小)布局控件QSplitter简介 PyQt还提供了特殊的布局管理器QSplitter.它可以动态地拖动子控件之间的边界,算是一个动态的布局管理器,QSplitter允许用 ...

  4. 基于颜色布局描述符(CLD)图像特征提取算法使用Python实现简单的人脸检测功能并使用PyQt5构建简单的功能界面(数字图像处理课程实验)

    文章目录 一.环境准备 二.数据集准备 三.项目结构 四.完整参考代码 imgCode/testUI3.py imgCode/test2.py 五.运行结果 测试一: 测试二 六.参考链接 一.环境准 ...

  5. winform实现拖曳功能

    1. 建立一個 Form, 並且拉一個 listBox 元件到上面 2. 命名 listBox 為 listBox_FileList 執行步驟  // Step 1: 拖拉功能啟動 this.list ...

  6. EventSystems之鼠标相关事件(实现拖曳功能常用)

    需要使用鼠标的相关事件,分为以下几步(记住首先确定脚本挂到物体上并添加了碰撞组件): 1.添加命名空间using UnityEngine.EventSystems; 2.挂到物体上的脚本类需要继承鼠标 ...

  7. PyQt5 画笔颜色选取功能 QPalette,QColorDialog

    画笔,画刷颜色改变功能 功能说明:点击"change"按钮 --> 跳出调色盘 --> 选择颜色并确定 -->画笔或画刷颜色改变,且控件颜色改变. class m ...

  8. vue3 - 【完整源码】实现容器用鼠标拖曳功能,将容器 “限制在指定范围内“ 鼠标拖拽移动并拿到横纵坐标(详细示例源码及注释,一键复制开箱即用)

    效果图 在vue3网页项目中,实现将一个容器设置为鼠标可拖动拖曳效果(并限制在边界内不可拖出去),并且拖拽时自动获取横纵坐标以及相关的事件,基础的示例可自定义为任何你想要的效果. 你可以直接下方效果图 ...

  9. pyqt5中控件缩放功能_PyQt5中布局内的控件如何充满布局?

    如图,PyQt5中布局内的控件如何充满布局? class CodeVersionDlg(QDialog): def __init__(self, parent=None): super(CodeVer ...

  10. python可视化拖拽平台_python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例...

    PyQt5数据拖曳Drag与Drop介绍 为用户提供的拖曳功能很直观,在很对桌面应用程序中,复制或移动对象都可以通过拖曳来完成 基于MIME类型的拖曳数据传输是基于QDrag类的,QMimeData对 ...

最新文章

  1. linux 命令 sys_call_table地址,Linux x86_64 内核查找sys_call_table注意事项
  2. HDU - 1556 Color the ball(树状数组)
  3. 网络故障排除工具 | 快速定位网络故障
  4. Leetcode: Validate Binary Search Tree
  5. Java中的迭代器设计模式–示例教程
  6. c语言自己编译自己,TCC研究(一): Tiny C Compiler最小的C语言编译器,自己编译自己...
  7. 记事本之修改非txt文档
  8. c语言数组的一维编程,C语言编程一维数组的使用.doc
  9. 01.vue的简单实例
  10. 随机数生成器python_Python中的随机数生成器
  11. qml 函数使用经验总结1(image中调用函数)
  12. linux 安装vlc源码包,linux Centons 6.5 下yum安装vlc
  13. usbcan、can分析仪、can卡的产品特点和功能特点
  14. vs2019专业版本 vtk安装
  15. 自建私有云与公有云托管对比_云托管:利与弊
  16. 利用代码快速批量取消微博的关注
  17. 多重背包二进制优化(wzk吃小鸡腿)
  18. oracle 近一年,华为Mate 20 Pro发布近一年,仍受追捧,四个方面告诉你原因
  19. kali密码破解笔记
  20. syscall(SyS_gettid)是什么

热门文章

  1. 八类网线和七类网线的区别_超6类和7类网线的区别
  2. 鸿蒙系统手机开机,华为手机鸿蒙系统 OS 2.0 开机界面演示
  3. android源代码居中字体,一篇文章了解移动端文本垂直居中
  4. LeetCode 三等分(题解+优化过程)
  5. 尺规作图将任意角度三等分
  6. html 文本框选中状态,JavaScript onselect 事件:文本框中的文本被选中
  7. Windows Terminal 设置背景图片
  8. tp6 支付宝沙箱支付
  9. 自己喜欢的句子总结一
  10. 【JS-05】javascript检测ie版本