Найти - Пользователи
Полная версия: Что делает self.addItem() ?
Начало » Центр помощи » Что делает self.addItem() ?
1
Serbeh
Здравствуйте, питонисты!
Меня интересует один вопрос, что делает вот эта строчка: self.addItem(…) (ниже она встречается несколько раз)?
Точнее, куда именно она добавляет элементы.
Нигде, вроде как, явно не обозначено, куда именно добавляются эти элементы…

Вот, собственно, кусок кода:
class DiagramScene(QtGui.QGraphicsScene):
InsertItem, InsertLine, InsertText, MoveItem = range(4)

itemInserted = QtCore.Signal(DiagramItem)

textInserted = QtCore.Signal(QtGui.QGraphicsTextItem)

itemSelected = QtCore.Signal(QtGui.QGraphicsItem)

def __init__(self, itemMenu, parent=None):
super(DiagramScene, self).__init__(parent)

self.myItemMenu = itemMenu
self.myMode = self.MoveItem
self.myItemType = DiagramItem.Step
self.line = None
self.textItem = None
self.myItemColor = QtCore.Qt.white
self.myTextColor = QtCore.Qt.black
self.myLineColor = QtCore.Qt.black
self.myFont = QtGui.QFont()
def mousePressEvent(self, mouseEvent):
if (mouseEvent.button() != QtCore.Qt.LeftButton):
return

if self.myMode == self.InsertItem:
item = DiagramItem(self.myItemType, self.myItemMenu)
item.setBrush(self.myItemColor)
self.addItem(item)
item.setPos(mouseEvent.scenePos())
self.itemInserted.emit(item)
elif self.myMode == self.InsertLine:
self.line = QtGui.QGraphicsLineItem(QtCore.QLineF(mouseEvent.scenePos(),
mouseEvent.scenePos()))
self.line.setPen(QtGui.QPen(self.myLineColor, 2))
self.addItem(self.line)
elif self.myMode == self.InsertText:
textItem = DiagramTextItem()
textItem.setFont(self.myFont)
textItem.setTextInteractionFlags(QtCore.Qt.TextEditorInteraction)
textItem.setZValue(1000.0)
textItem.lostFocus.connect(self.editorLostFocus)
textItem.selectedChange.connect(self.itemSelected)
self.addItem(textItem)
textItem.setDefaultTextColor(self.myTextColor)
textItem.setPos(mouseEvent.scenePos())
self.textInserted.emit(textItem)

super(DiagramScene, self).mousePressEvent(mouseEvent)
igor.kaist
Serbeh
class DiagramScene(QtGui.QGraphicsScene):
Ну посмотрите от чего унаследован класс, туда и добавляется :)
Serbeh
Да, действительно, у QtGui.QGraphicsScene есть список items, куда добавляются все объекты этой сцены) Спасибо :)
А вот не могли бы вы пояснить зачем нужна функция super? Она тут в двух местах встречается… я примерно понимаю, что она даёт доступ к скрытым методам родительского класса, но хотелось бы понять что именно делает эта функция и в чём, собственно говоря, фишка?
Serbeh
Благодарю!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB