博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PyQt5之Drag拖曳功能
阅读量:3958 次
发布时间:2019-05-24

本文共 1688 字,大约阅读时间需要 5 分钟。

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,mathfrom 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控件中,否则忽略此次操作。

运行效果如下:

在这里插入图片描述

转载地址:http://hvozi.baihongyu.com/

你可能感兴趣的文章
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Mysql索引
查看>>
OGNL投影查询
查看>>
OGNL投影查询
查看>>
OGNL投影查询
查看>>
Redis之RDB和AOF持久化
查看>>
Redis之RDB和AOF持久化
查看>>
Servlet3.0
查看>>
Servlet3.0
查看>>
Servlet3.0
查看>>
SQL 语句的解析过程
查看>>
SQL 语句的解析过程
查看>>
SQL 语句的解析过程
查看>>
Java类文件结构
查看>>
Java类文件结构
查看>>
使用注解生成代码
查看>>
使用注解生成代码
查看>>
使用注解生成代码
查看>>