到目前为止,我有以下代码:
p1 = QGraphicsWidget(self.scene.addItem(QGraphicsPixmapItem(self.pixmap)))
p2 = QGraphicsWidget(self.scene.addItem(QGraphicsPixmapItem(self.pixmap)))
self.grid.addItem(pixmap, 0, 0)
self.grid.addItem(pixmap2, 0,1 )
f = QGraphicsWidget()
f.setLayout(self.grid)
self.scene.addItem(f)
出于某种原因,这些相等的像素图被放置在彼此上。而我则想挨着对方。
w1 = self.scene.addItem(QGraphicsPixmapItem(self.pixmap))
w1.setPos(0,0)
pixmap = QGraphicsWidget(w1)
w2 = self.scene.addItem(QGraphicsPixmapItem(self.pixmap))
w2.setPos(200,0)
pixmap2 = QGraphicsWidget(w2)
self.grid.addItem(pixmap, 0, 0)
self.grid.addItem(pixmap2, 0,1 )
f = QGraphicsWidget()
f.setLayout(self.grid)
self.scene.addItem(f)
这段代码工作过度,但QGraphicsGridLayout不应该处理放置吗?
QGraphicsScene.addItem()
返回None
。
您没有将像素映射项目添加到QGraphicsWidget,而是直接将它们添加到场景中。此外,QGraphicsWidget构造函数中的第一个参数是父,因此它无论如何都无效;结果是,您实际上向布局中添加了空的QGraphicsWidgets。
让我们按照执行顺序分析前两行,这就是问题所在:
QGraphicsWidget(self.scene.addItem(QGraphicsPixmapItem(self.pixmap)))
^^^^^^^^^^^^^^^^^^^(^^^^^^^^^^^)
^^^^^^^^^^^^^^^^^^( 1. )
^^^^^^^^^^^^^^^( 2. )
3.
请记住,使用";嵌套的";函数调用意味着外部调用总是使用内部的返回值,就像带括号的数学表达式一样,的内部上述情况下,3
将使用2
的返回值,该返回值将与1
的返回值一起执行。
命令 | 当前参数结果返回对象|||
---|---|---|---|
1。 | QGraphicsPixmapItem(self.pixmap) | QPixmap创建一个项目,该项目将显示给定的像素图QGraphicsPixmapItem的实例 | |
2。 | self.scene.addItem(...) | QGraphicsPixmapItem实例将给定项目添加到场景None | |
3。 | QGraphicsWidget(...) | >创建一个空的QGraphicsWidget,不带父级 | QGraphics Widget实例 |