我想要一个python应用程序,它显示一堆小肖像和下面的名字。像那样:
它们应该是可移动的和可编辑的(通过双击文本)。
我正在使用PyQt4,所以我发现,对画布使用QGraphicsView
和QGraphicsScene
是最简单的。所以我将这样的QGraphicsItemGroup
子类化了:
from PyQt4 import QtCore, QtGui
class Speaker(QtGui.QGraphicsItemGroup):
def __init__(self, name, parent=None):
QtGui.QGraphicsItemGroup.__init__(self, parent)
self.setFlag(QtGui.QGraphicsItem.ItemIsMovable)
self.text = QtGui.QGraphicsTextItem(name)
self.text.setTextInteractionFlags(QtCore.Qt.TextEditorInteraction)
self.addToGroup(self.text)
self.portrait = QtGui.QGraphicsPixmapItem(QtGui.QPixmap("portrait.png"))
self.portrait.setY(-35)
self.addToGroup(self.portrait)
def keyPressEvent(self, QKeyEvent):
# Forwarding KeyPress events to the text to enable text editing
self.text.keyPressEvent(QKeyEvent)
但是有一些问题:
我试图捕捉双击信号并切换到编辑模式,将所有鼠标事件转发到文本。但是我无法通过双击激活编辑过程,而且我无法保留行为以通过单击其他位置来结束编辑。
所以我希望有人可以帮助我。知道如何手动激活和停用QGraphicsTextItem
的文本交互模式可能就足够了。谢谢!
答案 0 :(得分:1)
可能你应该调用QGraphicsItemGroup :: setHandlesChildEvents(false)。