【Python 实战基础】Python 中 PyQt6 的拖拽操作

目录

一、实战场景

二、主要知识点

文件读写

基础语法

PyQt6

sys

三、菜鸟实战

QDrag


一、实战场景

实战场景:Python 中 PyQt6 的拖拽操作

二、主要知识点

  • 文件读写

  • 基础语法

  • PyQt6

  • sys

三、菜鸟实战

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 方法激活它。


菜鸟实战,持续学习! 

猜你喜欢

转载自blog.csdn.net/qq_39816613/article/details/127124374