Каждый раз, когда я пытаюсь переместить прямоугольник в сцене, кажется, что исходная точка прямоугольника меняется на то место, где находился прямоугольник до обновления местоположения.
Итак, если я создаю прямоугольник в точке (0,0) и перемещаю его с помощью rect.setRect (x, y), то возвращение позиции даст (0,0) вместо (x, y).
Если вы переместите его в QGraphicsScene с помощью мыши, он вернет правильные (x, y).
Код, который я использую для создания прямоугольника, следующий:
class placeableObject:
def __init__(self, index, scene, QPen, QBrush, width=100, height=100):
"""Parent class for placeable objects"""
self.width = float(width)
self.height = float(height)
self.index = index
self.rect = scene.addRect(0, 0, int(width), int(height), QPen, QBrush)
self.rect.setFlag(QtWidgets.QGraphicsItem.ItemIsMovable)
Чтобы переместить этот прямоугольник, у меня есть следующая встроенная функция и функция для возврата позиции:
def getPos(self):
"""Returns a list with the x,y position of the object in the scene"""
return [self.rect.scenePos().x(), self.rect.scenePos().y()]
def move(self, x, y):
"""Moves the object in the editor view to coordinatex x,y"""
self.rect.setRect(x, y, self.width, self.height)