Уведомления

Группа в Telegram: @pythonsu

#1 Март 7, 2011 20:59:09

Serbeh
От:
Зарегистрирован: 2011-03-07
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Что делает self.addItem() ?

Здравствуйте, питонисты!
Меня интересует один вопрос, что делает вот эта строчка: 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)



Офлайн

#2 Март 7, 2011 21:29:53

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Что делает self.addItem() ?

Serbeh
class DiagramScene(QtGui.QGraphicsScene):
Ну посмотрите от чего унаследован класс, туда и добавляется :)



Офлайн

#3 Март 9, 2011 00:12:25

Serbeh
От:
Зарегистрирован: 2011-03-07
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Что делает self.addItem() ?

Да, действительно, у QtGui.QGraphicsScene есть список items, куда добавляются все объекты этой сцены) Спасибо :)
А вот не могли бы вы пояснить зачем нужна функция super? Она тут в двух местах встречается… я примерно понимаю, что она даёт доступ к скрытым методам родительского класса, но хотелось бы понять что именно делает эта функция и в чём, собственно говоря, фишка?



Офлайн

#5 Март 9, 2011 01:08:13

Serbeh
От:
Зарегистрирован: 2011-03-07
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Что делает self.addItem() ?

Благодарю!



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version