【问题标题】:How to rotate a polygon on a QGraphicsScene at pyqt4?如何在 pyqt4 的 QGraphicsScene 上旋转多边形?
【发布时间】:2017-05-31 00:48:22
【问题描述】:

关于问题PyQT: Rotate a QLabel so that it's positioned diagonally instead of horizontally,他们正在使用QPainter 的内置方法旋转多边形:

class MyLabel(QtGui.QWidget):
    def paintEvent(self, event):
        painter = QtGui.QPainter(self)
        painter.setPen(QtCore.Qt.black)
        painter.translate(20, 100)
        painter.rotate(-90)
        painter.drawText(0, 0, "hellos")
        painter.end()

但是,在我的代码中,我在 QGraphicsScene 中,它似乎有这个:

from PyQt4 import QtGui, QtCore

class MyFrame(QtGui.QGraphicsView):
    """
        Python PyQt: How can I move my widgets on the window with mouse?
        https://stackoverflow.com/questions/12213391
    """
    def __init__( self, parent = None ):
        super( MyFrame, self ).__init__( parent )

        scene = QtGui.QGraphicsScene()
        self.setScene( scene )
        self.resize( 400, 240 )

        # http://pyqt.sourceforge.net/Docs/PyQt4/qpen.html
        pencil = QtGui.QPen( QtCore.Qt.black, 2)
        pencil.setStyle( QtCore.Qt.SolidLine )

        polygon = QtGui.QPolygonF( [QtCore.QPointF( 250, 100 ), \
                QtCore.QPointF( 400, 250 ), QtCore.QPointF( 200, 150 ) ] )

        brush = QtGui.QBrush( QtGui.QColor( 125, 125, 125, 125 ) )
        scene.addPolygon( polygon, pencil, brush )

if ( __name__ == '__main__' ):
    app = QtGui.QApplication( [] )
    f = MyFrame()
    f.show()
    app.exec_()

我如何使用QGraphicsScene 来调用这个场景,就像另一个问题一样?

polygon.translate(20, 100)
polygon.rotate(-90)

【问题讨论】:

    标签: python qt pyqt pyqt4


    【解决方案1】:

    您必须使用类QTransform 的对象,该对象具有实现许多转换的能力。 addPolygon 函数返回项,我们使用该项来应用转换。

    p = scene.addPolygon(polygon, pencil, brush)
    
    transform = QtGui.QTransform()
    transform.translate(20, 100)
    transform.rotate(-90)
    
    p.setTransform(transform)
    

    之前:

    之后:

    【讨论】:

    • transform.translate() 中的值从何而来? (20,100)
    • @usario30032021 如果变换在场景中的某个位置然后您移动它(20、100),则该项目。它不是依赖于某些东西的值,而是由 OP 选择的值。
    猜你喜欢
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 2017-01-10
    相关资源
    最近更新 更多