为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕哥6287543 2022-07-05 17:03:55
我目前正在使用 Python 中的 PyQt4,我无法在网上找到任何关于将 PyQt UI 上的 GraphicsView 类中的 2 个不同项目组合在一起的信息。这可能吗?目标是在 GraphicsView 类中将一个 QGraphicsPixmapItem 锚定到另一个,以便当一个人的位置发生变化或旋转时,另一个会跟随。更重要的是,一个 QGraphicsPixmapItem 是否可以锚定到另一个的特定位置?例如边缘,这样当其他图形项目旋转或移动时,锚定的图形项目将保持在相对于移动项目的确切位置。
查看完整描述

1 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

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


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_())


查看完整回答
反对 回复 2022-07-05
  • 1 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号