在maya里拖拽标签实现信息传递(pyside2)

版权声明:zhaojanc https://blog.csdn.net/qq_38641985/article/details/81533323
from PySide2 import QtGui,QtWidgets,QtCore
class DraggableLabel(QtWidgets.QLabel):
    def __init__(self, *args, **kwargs):
        super(DraggableLabel, self).__init__(*args, **kwargs)

        self.setAlignment(QtCore.Qt.AlignCenter)

        palette = self.palette()
        palette.setColor(self.backgroundRole(), QtCore.Qt.black)
        self.setPalette(palette)
        self.setAutoFillBackground(True)

    def mousePressEvent(self, event):
        super(DraggableLabel, self).mousePressEvent(event)

        mimeData = QtCore.QMimeData()
        mimeData.setText(self.text())

        drag = QtGui.QDrag(self)
        drag.setMimeData(mimeData)      
        drag.exec_()

class DroppableLineEdit(QtWidgets.QLineEdit):
    def __init__(self, *args, **kwargs):
        super(DroppableLineEdit, self).__init__(*args, **kwargs)
        self.setAcceptDrops(True)

    def dropEvent(self, event):
        if event.mimeData().hasText():
            self.setText(event.mimeData().text())
            event.accept()


widget =QtWidgets.QWidget()
widget.setWindowFlags(QtCore.Qt.Window)
widget.resize(640, 72)

mainLayout = QtWidgets.QVBoxLayout(widget)
mainLayout.addWidget(DroppableLineEdit())

layout = QtWidgets.QHBoxLayout(widget)
mainLayout.addLayout(layout)

layout.addWidget(DraggableLabel('persp'))
layout.addWidget(DraggableLabel('top'))
layout.addWidget(DraggableLabel('front'))
layout.addWidget(DraggableLabel('side'))
widget.show()

1,首先,打开maya,找到脚本编辑器。
2,导入PySide2的模块
3,重写单行文本框;重写标签,并设置背景;并为他们添加拖拽或接受拖拽功能;
4,定义布局,把他们放到一起。
5,运行脚本测试完成。

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_38641985/article/details/81533323