本篇主要介绍PyQt5中拖放的操作。
在计算机图形用户界面中,拖放指单击虚拟对象并将其拖动到其他位置或另一个虚拟对象的动作。通常情况下,它可以用来调用多种动作或者在两个抽象对象之间创建各种类型的关联。
拖放是用户图形界面的一部分,拖拽可以使用户更加直观地执行复杂操作。
通常我们可以拖放两件事:数据或一些图形对象。如果我们从一个应用程序拖动一张图片到另一个程序,我拖放的即为二进制数据。如果我们在FireFox中拖动一个标签并将其移动到另一个地方,我们就会拖放一个图形组件。
QDrag
QDrag支持基于MIME的拖放数据传输,它处理拖放操作的大部分细节,传输的数据包含在QMimeData对象中。
Simple drag and drop
在第一个示例中,我们有一个QLineEdit和一个QPushButton。从行编辑小部件拖动纯文本并将其拖放到按钮小部件上,从而改变按钮的标签。
import sys
from PyQt5.QtWidgets import QPushButton, QWidget, QLineEdit, QApplication
class Button(QPushButton):
def __init__(self, title, parent):
super().__init__(title, parent)
self.setAcceptDrops(True)
def dragEnterEvent(self, e):
if e.mimeData().hasFormat('text/plain'):
e.accept()
else:
e.ignore()
def d