目录
一、实战场景
实战场景:Python 中 PyQt6 的拖拽操作
二、主要知识点
三、菜鸟实战
QDrag
QDrag
提供对基于 MIME
的拖放数据传输的支持。它处理拖放操作的大部分细节。传输的数据包含在 QMimeData
对象中
import sys
from PyQt6.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 dropEvent(self, e):
self.setText(e.mimeData().text())
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
edit = QLineEdit('', self)
edit.setDragEnabled(True)
edit.move(30, 65)
button = Button("Button", self)
button.move(190, 65)
self.setWindowTitle('Simple drag and drop')
self.setGeometry(300, 300, 300, 150)
def main():
app = QApplication(sys.argv)
ex = Example()
ex.show()
app.exec()
if __name__ == '__main__':
main()
示例展示了简单的拖拽操作。
class Button(QPushButton):
def __init__(self, title, parent):
super().__init__(title, parent)
...
为了完成把文本拖到 QPushButton
部件上,我们必须实现某些方法才可以,所以这里创建了一个继承自 QPushButton
的 Button
类。
self.setAcceptDrops(True)
使用 setAcceptDrops
方法处理部件的释放事件。
def dragEnterEvent(self, e):
if e.mimeData().hasFormat('text/plain'):
e.accept()
else:
e.ignore()
dragEnterEvent
方法,定义了我们接受的数据类型————纯文本。
def dropEvent(self, e):
self.setText(e.mimeData().text())
dropEvent
方法,处理释放事件————修改按钮组件的文本。
edit = QLineEdit('', self)
edit.setDragEnabled(True)
QLineEdit
部件支持拖放操作,这里只需要调用 setDragEnabled
方法激活它。
菜鸟实战,持续学习!