QGraphicsLineItem изменить координаты

Подвинуть линию на сцене по координатам x,y можно функцией moveBy. Собственно вопрос, как поменять координаты точек p2(x1, y1). Мне например нужно подвинуть точку p2(y1), я пытаюсь вызватьsetLine(QLineF(0,0,0,-300)), точка p2(y1) отлично передвигается на нужно мне место, НО!!! координата p1(y0), тоже едет вниз на 200 пикселей, то есть, были начальные координаты (0,0,0,-100), после вызова функции setLine(QLineF(0,0,0,-300)), они становятся (0,200,0,-300), так вроде не должно быть, как это работает? И еще нюанс, я пытаюсь прочитать координаты линии через функцию pos, и там мне возвращается значение, которое и должно быть после вызова функции setLine(QLineF(0,0,0,-300)), а именно (0,0,0,-300), но на визуальной составляющей, происходит то, что описано выше. Код на всякий случай:

class CustomGraphView(QWidget):
    mainLayout: QHBoxLayout
    mainScene: QGraphicsScene
    mainGraphicsView: QGraphicsView
    itemGroup: QGraphicsItemGroup
    line: QGraphicsLineItem
    posYInc: float
    timer: QTimer

    def __init__(self):
        super().__init__()

        self.setMinimumSize(2000, 1000)
        self.show()

        self.mainLayout = QHBoxLayout()
        self.setLayout(self.mainLayout)

        self.mainScene = QGraphicsScene()
        self.mainGraphicsView = QGraphicsView()
        # self.mainGraphicsView.setSceneRect(float(QRect().x()), float(QRect().y()), float(QRect().width()), float(QRect().height()))
        self.mainGraphicsView.setScene(self.mainScene)
        self.mainLayout.addWidget(self.mainGraphicsView)

        # rectangle = QGraphicsRectItem(0, 0, 500, 50)
        # # rectangle.setFlag(QGraphicsItem.GraphicsItemFlag.ItemIsMovable, True)
        # self.mainScene.addItem(rectangle)
        self.itemGroup = QGraphicsItemGroup()
        self.mainScene.addItem(self.itemGroup)

        self.posYInc = 0
        self.line = QGraphicsLineItem(0, 0, 0, 100)
        pen = QPen(Qt.PenStyle.SolidLine)
        pen.setBrush(QBrush(QColor(255, 0, 255)))
        self.line.setPen(pen)
        self.itemGroup.addToGroup(self.line)

        self.timer = QTimer()
        self.timer.timeout.connect(self.thread)
        self.timer.start(1)

    def thread(self):
        self.posYInc += 0.05
        # self.line.setPos(0, self.posYInc)
        # self.line.moveBy(0, 0.1)

        self.line.setLine(QLineF(0, 0, 0, 100 + self.posYInc))

Ответы (1 шт):

Автор решения: Duracell

Оказывается, все отлично работает, просто нужно было ограничить сцену размерами , в моем случае размерами окна:

 self.mainScene = QGraphicsScene()
        self.mainGraphicsView = QGraphicsView()
        self.mainGraphicsView.setScene(self.mainScene)
        self.mainGraphicsView.setSceneRect(float(self.rect().x()), float(self.rect().y()), float(self.rect().width()), float(self.rect().height()))
        self.mainLayout.addWidget(self.mainGraphicsView)
→ Ссылка