С момента предыдущего моего треда понял, что найденное решение, кхм, не очень. Решил сделать еще раз, строго по примерам и манам. Наткнулся на странный момент.
Модуль main подключает класс BPlot(QGraphicsView). Выполняется следующая фигня
self.graph = BPlot()
В BPlot вызывается __init__, resizeEvent и showEvent.
def __init__(self, parent=None):
super(BPlot, self).__init__(parent)
self.L = 25
... - пачка констант
self.scene = QGraphicsScene()
self.setScene(self.scene)
def showEvent(self, event):
super(BPlot, self).showEvent(event)
vw = self.viewport().width
hw = self.viewport().height
self.scene.setSceneRect(0,0,vw,vh)
self.populate(vw, vh)
def populate(self, vw, vh):
self.axis = QGraphicsLineItem()
self.axis.setLine(0,0,vw+10,vh+20)
self.scene.addItem(self.axis)
... - тут идет еще пачка Item'ов
def resizeEvent(self, event):
vw = self.viewport().width
hw = self.viewport().height
self.axis.setLine(0,0,vw+10,vh+20)
... - обновление остальных Item'ов
def setL(self):
self.L = 35
vw = 25
hw = 45
self.axis.setLine(0,0,vw+10,vh+20) - там не так, просто пример
Фигня в следующем. Я могу вызвать self.scene.items() чтобы получить список Item'ов. При вызове из первыз четырех функций все отлично. Но если я вызываю его из BPlot или просто из функции-не_Event'а вроде setL() - то он выдает пустой массив. Также он нормально обрабатывает boundingRect() в этих функциях и выдает пустоту в других. Причем обычные значения переменных (например self.L) он обрабатывает нормально откуда бы я его не вызывал (и из main, и из BPlot)
Возможно я делаю неправильно, создавая scene сразу внутри BPlot, сейчас пытаюсь создать его в main и передать в BPlot оттуда
ЧЯНТД?
upd: Наткнулся похоже на основной косяк - если вызвать в main
print(self.graph.scene)
print(self.scene)