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".
Итак, мои вопросы таковы:
Как получить доступ к элементу
QPixmapпосле добавления его вQGraphicsViewчерезQGraphicsScene. (Я полагаю, чтоQPixmapв этой точке являетсяQGraphicsItem, или, точнее,QGraphicsPixmapItem.)
После получения доступа, как я могу переместить его или изменить любой из его других атрибутов.
Был бы очень благодарен за помощь, или если кто-то имеет любые хорошие ссылки на учебные пособия, имеющие отношение к вопросу. :)
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