变换是关于一个点的,这个点可以通过函数 setTransformOriginPoint() 来改变,因为它要求对象不移动,只缩放,然后你必须在项目的中心建立那个点。
item.setTransformOriginPoint(item.boundingRect().center())
item.setScale(factor)
例子:
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
w = QGraphicsView()
w.setScene(QGraphicsScene(QRectF(0, 0, 640, 480)))
w.show()
it = QGraphicsTextItem("test")
w.scene().addItem(it)
it.setPos(320, 240)
it.setTransformOriginPoint(it.boundingRect().center())
timeline = QTimeLine()
timeline.setFrameRange(1, 10)
timeline.setCurveShape(QTimeLine.CosineCurve)
timeline.frameChanged.connect(it.setScale)
timeline.start()
sys.exit(app.exec_())