我刚接触PyQt,遇到了一个问题,即旋转QGraphicsEllipseItem时出现了问题。我希望椭圆绕其中心旋转,而不是绕用于定义椭圆的QRectF的角旋转。我的代码如下(抱歉,我编写代码的计算机没有Internet访问权限,因此我手动将相关部分复制到这里):
self.scene = QtGui.QGraphicsScene()
self.ui.graphicsView.setScene(self.scene)
pen = QtGui.QPen(QColor(Qt.yellow))
# Draw first Ellipse
# This code correctly places a yellow ellipse centered at the scene 500,500 point
ellipse1 = QtGui.QGraphicsEllipseItem(0,0,100,10)
ellipse1.setPen(pen)
self.scene.addItem(ellipse1)
ellipse1.setPos(500, 500)
ellipse1.translate(-50, -5)
# Now, try to draw a rotated ellipse
# This code rotates the ellipse about the 0,0 location of the rectangle
# which is the scene 450, 495 point, not the center of the ellipse
ellipse2 = QtGui.QGraphicsEllipseItem(0,0,100,10)
ellipse2.setPen(pen)
self.scene.addItem(ellipse2)
ellipse2.setPos(500, 500)
ellipse2.translate(-50, -5)
ellipse2.rotate(45.0)
好的,这基本上是我预期的。由于QGraphicsEllipseItem源自QGraphicsItem,因此在旋转之前,我尝试为ellipse2设置变换原点:
ellipse2 = QtGui.QGraphicsEllipseItem(0,0,100,10)
ellipse2.setPen(pen)
self.scene.addItem(ellipse2)
ellipse2.setPos(500, 500)
ellipse2.translate(-50, -5)
ellipse2.setTransformOriginPoint(450, 495)
ellipse2.rotate(45.0)
这导致出现错误“AttributeError:'QGraphicsEllipseItem'对象没有'setTransformOriginPoint'属性”。
显然,我在做一些错误的事情或对QGraphicsEllipseItem做了错误的假设。一些站点暗示我可能需要使用边界矩形来进行旋转,但我不明白如何实现。
如果有人能向我展示在pyqt中正确地围绕椭圆的中心旋转的方法,我将不胜感激!!!