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

标签 python pyqt pyqt4 qgraphicspixmapitem

我目前正在 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/

相关文章:

python - 如何检查是否按下了键盘修饰符(Shift、Ctrl 或 Alt)?

python - 单击 QDockWidget 的选项卡时的通知?

python - 两个数组中出现的最小值

python - Keras LSTM 训练。如何调整我的输入数据?

python - 使内容和选项卡在pyqt5中可扩展

python - 是否可以使用 pyinstaller 来构建带有我自己的图标的 exe?

python - PyQt QTcpServer : How to return data to multiple clients?

Python错误email.mime没有属性 'MIMEMultipart'

python - 如何在数据框末尾添加某些列的总和

python - 从 QML 访问 Python QObject 无法在第二次调用时转换