class MyTextItem(QGraphicsTextItem):
def __init__(self, text=None, parent=None):
super().__init__(text, parent)
self.setTextInteractionFlags(Qt.TextEditorInteraction)
self.setFocus()
def focusOutEvent(self, event):
super().focusOutEvent(event)
print("text = {}".format(self.toPlainText()))
class CanvasView(QGraphicsView):
def __init__(self, scene, parent=None):
super().__init__(scene, parent)
self.setStyleSheet("padding:0px;border:0px")
self.setAlignment(Qt.AlignLeft | Qt.AlignTop)
self.item = None
self.is_edit = False
def mousePressEvent(self, event):
super().mousePressEvent(event)
print("mousePressEvent {}".format(event.pos()))
def mouseMoveEvent(self, event):
super().mouseMoveEvent(event)
print("mouseMoveEvent")
pass
def mouseReleaseEvent(self, event):
super().mouseReleaseEvent(event)
print("mouseReleaseEvent")
if self.is_edit:
self.is_edit = False
return
else:
self.item = MyTextItem()
self.item.setPos(event.pos())
self.scene().addItem(self.item)
self.is_edit = True
class MyWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.scene = QGraphicsScene(self)
self.m_view = CanvasView(self.scene, self)
self.m_view.setGeometry(0, 0, 800, 600)
self.scene.setSceneRect(0, 0, self.m_view.width(), self.m_view.height())
if __name__ == "__main__":
app = QApplication(sys.argv)
wid = MyWidget()
wid.setGeometry(100, 100, 800, 600)
wid.show()
app.exec_()
QGraphicsTextItem
于 2020-09-22 18:18:15 首次发布