PyQt/PySide как получить доступ/переместить QGraphicsItem после добавления его в QGraphicsScene



Это может быть очень неосведомленный вопрос.



Я пытался выяснить QGraphics*, и столкнулся с проблемой при попытке переместить элемент (растровое изображение) относительно или внутри QGraphicsView.



class MainWindow(QMainWindow,myProgram.Ui_MainWindow):

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

self.scene = QGraphicsScene()
self.graphicsView.setScene(self.scene)

pic = QPixmap('myPic.png')

self.scene.addPixmap(pic)

print(self.scene.items())


Это соответствующая часть программы с произвольным PNG





Моей целью, например, было бы переместить мусорное ведро в левую часть QGraphicsView.

Я попытался добавить это к приведенному выше коду:



   pics = self.scene.items()
for i in pics:
i.setPos(100,100)


Однако, это не имеет значения, и даже если бы это было так, было бы неловко искать его с помощью "for in".



Итак, мои вопросы таковы:





  1. Как получить доступ к элементу QPixmap после добавления его в QGraphicsView через QGraphicsScene. (Я полагаю, что QPixmap в этой точке является QGraphicsItem, или, точнее, QGraphicsPixmapItem.)



  2. После получения доступа, как я могу переместить его или изменить любой из его других атрибутов.



Был бы очень благодарен за помощь, или если кто-то имеет любые хорошие ссылки на учебные пособия, имеющие отношение к вопросу. :)

710   1  

1 ответ:

Проблема в том, что вам нужно установить размер вашей сцены, а затем установить позиции элементов, проверьте этот пример:

from PyQt4 import QtGui as gui

app = gui.QApplication([])

pm = gui.QPixmap("icon.png")

scene = gui.QGraphicsScene()
scene.setSceneRect(0, 0, 200, 100) #set the size of the scene

view = gui.QGraphicsView()
view.setScene(scene)

item1 = scene.addPixmap(pm) #you get a reference of the item just added
item1.setPos(0,100-item1.boundingRect().height()) #now sets the position

view.show()
app.exec_()

Comments

    Ничего не найдено.