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))
事实证明,一切正常,只需将场景限制为尺寸,在我的情况下,限制为窗口的尺寸: