python可视化拖拽平台_python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例...
PyQt5数据拖曳Drag与Drop介绍
为用户提供的拖曳功能很直观,在很对桌面应用程序中,复制或移动对象都可以通过拖曳来完成
基于MIME类型的拖曳数据传输是基于QDrag类的,QMimeData对象将关联的数据与其对应的MIME类型相关联
MIME意为多功能Internet邮件扩展,它设计的最初目的是为了在发送电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理。然而当它被HTTP协议支持之后,它的意义就更为显著了。它使得HTTP传输的不仅是普通的文本,而变得丰富多彩。
每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的种类。
常见的MIME类型(通用型):
超文本标记语言文本 .html text/html
xml文档 .xml text/xml
XHTML文档 .xhtml application/xhtml+xml
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
PDF文档 .pdf application/pdf
Microsoft Word文件 .word application/msword
PNG图像 .png image/png
GIF图形 .gif image/gif
JPEG图形 .jpeg,.jpg image/jpeg
au声音文件 .au audio/basic
MIDI音乐文件 mid,.midi audio/midi,audio/x-midi
RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar
任意的二进制数据 application/octet-stream
MIME类型的数据可以简单的理解为互联网上的各种资源,比如文本,音频和图片等资源,互联网上的每一种资源都属于一种MIME类型的数据
MimeData类函数允许检测和使用方便的MIME类型
判断函数
设置函数
获取函数
MIME类型
hasText()
text()
setText()
text/plain
hasHtml()
html()
setHtml()
text/html
hasUrls()
urls()
setUrls()
text/url-list
hasImage()
imageData()
setImageData
image/*
hasColor()
colorData()
setColrDaata()
application/x-color
许多QWidget对象都支持拖曳动作,允许拖曳数据的控件必须设置QWidget.setDragEnabled()为True,另外,控件应该响应拖曳事件,以便储存所拖曳的数据
常用的拖曳事件如表
事件
描述
DragEnterEvent
当执行一个拖曳控件操作,并且鼠标指针进入该控件时,这个事件将会被触发。在这个事件中可以获得被操作的窗口控件,还可以有条件地接受或拒绝该拖曳操作
DragMoveEvent
在拖曳操作进行时会触发该事件
DragLeaveEvent
当执行一个拖曳操作,并且鼠标指针离开该控件时,这个事件被触发
DropEvent
当拖曳操作在其目标控件上被释放时,这个事件将被触发
Drag拖曳功能实例
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class Combo(QComboBox):
def __init__(self,title,parent):
super(Combo, self).__init__(parent)
#设置为可接受拖曳操作文本
self.setAcceptDrops(True)
#当执行一个拖曳控件操作,并且鼠标指针进入该控件时,这个事件将会被触发。
# 在这个事件中可以获得被操作的窗口控件,还可以有条件地接受或拒绝该拖曳操作
def dragEnterEvent(self,e):
#检测拖曳进来的数据是否包含文本,如有则接受,无则忽略
if e.mimeData().hasText():
e.accept()
else:
e.ignore()
#当拖曳操作在其目标控件上被释放时,这个事件将被触发
def dropEvent(self,e):
#添加拖曳文本到条目中
self.addItem(e.mimeData().text())
class Example(QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
#表单布局,添加控件
lo=QFormLayout()
lo.addRow(QLabel('请把左边的文本拖曳到右边的下拉菜单中'))
#实例化单行文本框,设置为允许拖曳操作
edit=QLineEdit()
edit.setDragEnabled(True)
#实例化Combo对象,添加控件到布局中
com=Combo('Button',self)
lo.addRow(edit,com)
#设置主窗口布局及标题
self.setLayout(lo)
self.setWindowTitle('简单的拖曳例子')
if __name__ == '__main__':
app=QApplication(sys.argv)
ex=Example()
ex.show()
sys.exit(app.exec_())
效果如图
代码分析:
在这个例子中,DragEnterEvent会验证事件的MIM的数据是否包含字符串文本,如果包含字符串文本,就接受事件提出的添加文本操作,并将文本作为新条目(Item)添加到ComboBox控件中,否则忽略这次操作
def dragEnterEvent(self,e):
#检测拖曳进来的数据是否包含文本,如有则接受,无则忽略
if e.mimeData().hasText():
e.accept()
else:
e.ignore()
本文主要介绍了PyQt5控件数据拖曳Drag与Drop详细使用方法与实例,更多关于这方面的知识请查看下面的相关链接
python可视化拖拽平台_python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例...相关推荐
- python输入数据pyqt5_python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例...
在pyqt5编程过程中,经常会遇到输入或选择多个参数的问题,把多个参数写到一个窗口中,主窗口会显得很臃肿,所以,一般是添加一个按钮,调用对话框,在对话框中进行参数的选择,关闭对话框将参数返回给主窗口 ...
- python 动态调整控件大小_python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例...
PyQt5动态(可拖动控件大小)布局控件QSplitter简介 PyQt还提供了特殊的布局管理器QSplitter.它可以动态地拖动子控件之间的边界,算是一个动态的布局管理器,QSplitter允许用 ...
- python menu实例_python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例...
PyQt5菜单栏控件QMenuBar介绍 QMenuBar在QMainWindow对象的标题栏下方,水平的QMenuBar被保留显示QMenu对象 QMenuBar类提供了一个可以包含一个或多个QAc ...
- qpython3可视图形界面_python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法...
QWidget基本介绍 基础窗口控件QWidget类是所有用户界面对象的基类,所有的窗口或者控件都直接或者间接的继承自QWidget类. 窗口坐标系统 PyQt使用统一的坐标系统来定位窗口控件的位置和 ...
- pythongui项目实例_python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例...
PyQt5状态栏控件QStatusBar简介 MainWindow对象在底部保留有一个水平条,作为状态栏(QstatusBar),用于显示永久或临时的状态信息 QStatusBar类中的常用方法 方法 ...
- python界面设计资源库_python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法...
PyQt5 Qt Designer (Qt设计师) PyQt5是对Qt所有类进行封装, Qt能开发的东西, PyQt都能开发. Qt是强大的GUI库之一, 用C++开发, 并且跨平台. PyQt双许可 ...
- python制作窗口界面_python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
窗口背景主要包括,背景色与背景图片,设置窗口背景有三种方法 使用QSS设置窗口背景 使用QPalette设置窗口背景 实现PainEvent,使用QPainter绘制背景 QSS设置窗口背景 在QSS ...
- python图形界面设计代码_python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方...
PyQt5 Qt Designer (Qt设计师) PyQt5是对Qt所有类进行封装, Qt能开发的东西, PyQt都能开发. Qt是强大的GUI库之一, 用C++开发, 并且跨平台. PyQt双许可 ...
- python界面编程实例_python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例...
在默认情况下,我们使用PyQt5创建出来的窗口和部件都是默认的样式,虽然谈不上很丑,但是也毫无美感可言.其实,在PyQt5中,我们可以有较高的自由度来自定义窗口和各种小部件的样式,通过自定义这些样式, ...
最新文章
- STL中的双向队列deque
- java注解,通过反射解析注解,模仿hibernate,获取sql语句。
- 如何在SQL Server中使用触发器
- JDBC、DriverManage、JNDI、数据源(DataSource)、连接池的区别
- java mapreduce 实例_MapReduce -- JAVA 实例(一)计算总数
- 出现(n+1)/2次的数 — 给n个数字,求至少出现(N+1)/2次的那个数字?
- 123.买卖股票的最佳时机III
- vscode安装插件提示版本不匹配或版本过低
- python怎么读音发音英语翻译-python style是什么意思
- mathorcup历年优秀论文阿里云盘
- Superset航班数据可视化实战
- Parallels Desktop 17新版本:让MacM1享受Windows11的配置全流程
- 顶级的 18 款开源的低代码开发平台,经典收藏
- HIVE 计算指定日期本周的第一天和最后一天
- 快速构建Table和Form页面
- 公司官网产品爬取写入ES
- 元胞自动机交通模型【matlab实现】
- ICT产业关联效应的国际比较——基于投入产出的分析
- Java内存区域与OutOfMemoryError
- Q245R(R-HIC)是什么材质Q245R(R-HIC)抗氢钢钢板简介化学成分