如何在拖放操作后将文本从QLineEdit拖放到QGraphicsView并创建动画图像

时间:2019-09-15 11:51:33

标签: python pyqt5

我尝试使用下面的python代码使用QGraphicsView和QGraphicsScene方法创建一个矩形

    mytext2 = QtWidgets.QGraphicsSimpleTextItem(“AD: ” + self.pushButton_2.text())
    scene.addItem(mytext2)
    mytext2.setPos(640, 70)
    rect_item1 = QtWidgets.QGraphicsRectItem(QtCore.QRectF(70, 70, 640, 220))
    rect_item1.setFlag(QtWidgets.QGraphicsItem.ItemIsMovable, False)
    rect_item1.setPen(QPen(Qt.darkYellow, 5, Qt.DashDotDotLine))
    scene.addItem(rect_item1) 

enter image description here

上面的方法看起来都不错,但我想知道如何将具有可拖动文本和图像作为背景的QLineEdit拖放到QGraphicsView上并对其进行动画处理。

enter image description here

我为QGraphicsView创建了一个类,如下所示。

class QGraphView(QtWidgets.QGraphicsView):
   Graph_dropped = QtCore.pyqtSignal(str)
   def __init__(self, parent):
       super().__init__(parent)
       self.setAcceptDrops(True)
   def dragEnterEvent(self, q_graphics_event):
       q_graphics_event.accept()
       q_graphics_event.acceptProposedAction()
       if q_graphics_event.mimeData().hasFormat(‘text/plain’):
           q_graphics_event.accept()
       else:
           q_graphics_event.ignore()
   def dropEvent(self, event):
       self.Graph_dropped.emit(event.mimeData().text())

使用以下代码实例化QGraphicsView

       self.graphicsView_2 = QGraphView(self.tab_4)
       self.graphicsView_2.setGeometry(QtCore.QRect(140, 620, 751, 261))
       self.graphicsView_2.setObjectName(“graphicsView_2”)
       self.graphicsView_2.Graph_dropped.connect(self.draw_apps)
       self.scene_2 = QtWidgets.QGraphicsScene(self.tab_4)
       self.graphicsView_2.setScene(self.scene_2)

现在,我尝试使用QGraphicsScene将Linewidget添加到QGraphicsView中,但是我相信不会触发dragEnterEvent。

def draw_apps(self, scene_2):
       mytext3 = QtWidgets.QGraphicsItem(self.lineEdit_13)
       #QGraphicsSimpleTextItem(“APPS: ” + self.pushButton.text().split(‘-’)[1].capitalize())
       self.scene_2.addItem(mytext3)
       mytext3.setPos(120, 20)

0 个答案:

没有答案