gpt4 book ai didi

python - 是否可以将一个 QGraphicsPixmapItem 附加到另一个 QGraphicsPixmapItem?

转载 作者:行者123 更新时间:2023-12-02 03:01:27 24 4
gpt4 key购买 nike

我目前正在 Python 中使用 PyQt4,但我无法在网上找到任何有关将 PyQt UI 上的 GraphicsView 类中的 2 个不同项目组合在一起的信息。这可能吗?

目标是将一个 QGraphicsPixmapItem 锚定到 GraphicsView 类中的另一个 QGraphicsPixmapItem,以便当一个 QGraphicsPixmapItem 的位置更改或旋转时,另一个会跟随。更重要的是,一个 QGraphicsPixmapItem 是否可以锚定到另一个 QGraphicsPixmapItem 的特定位置?例如。边缘,这样当其他图形项旋转或移动时,锚定图形项将保持在相对于移动项的准确位置。

最佳答案

如果您希望一个项目在最后一个项目旋转或移动时不改变其相对于另一个项目的位置,那么第一个项目是第二个项目的子项目就足够了:

import random
import sys

from PyQt4 import QtCore, QtGui


def create_pixmap(size):
pixmap = QtGui.QPixmap(size)
pixmap.fill(QtGui.QColor(*random.sample(range(255), 3)))
return pixmap


class VariantAnimation(QtCore.QVariantAnimation):
def updateCurrentValue(self, value):
pass


if __name__ == "__main__":

app = QtGui.QApplication(sys.argv)

w = QtGui.QMainWindow()

scene = QtGui.QGraphicsScene(w)
view = QtGui.QGraphicsView(scene)

parent_item = scene.addPixmap(create_pixmap(QtCore.QSize(150, 150)))
parent_item.setTransformOriginPoint(parent_item.boundingRect().center())
parent_item.setFlag(QtGui.QGraphicsItem.ItemIsMovable, True)

child_item = QtGui.QGraphicsPixmapItem(
create_pixmap(QtCore.QSize(70, 70)), parent_item
)
# or
# child_item = QtGui.QGraphicsPixmapItem(create_pixmap(QtCore.QSize(70, 70)))
# child_item.setParentItem(parent_item)

animation = VariantAnimation(
startValue=0, endValue=360, duration=1000, loopCount=-1
)
animation.valueChanged.connect(parent_item.setRotation)
animation.start()

w.setCentralWidget(view)
w.resize(640, 480)
w.show()

sys.exit(app.exec_())

关于python - 是否可以将一个 QGraphicsPixmapItem 附加到另一个 QGraphicsPixmapItem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59870159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com