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


菜鸟实战,持续学习! 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟实战

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值