2017-05-30 31 views
0

質問PyQT: Rotate a QLabel so that it's positioned diagonally instead of horizontallyに、彼らはビルドにQPainterの方法を使用してポリゴンを回転さ:pyqt4で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_() 

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内だが、これを持っていますこのシナリオでは、QGraphicsSceneを使用して他の質問のように呼び出すことはできますか?

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

答えて

1

あなたはこの1つは、多くの変換を実装する能力を持っている、クラスQTransformのオブジェクトを使用する必要があります。 addPolygon関数はアイテムを返し、このアイテムを使用して変換を適用します。後

enter image description here

enter image description here

p = scene.addPolygon(polygon, pencil, brush) 

transform = QtGui.QTransform() 
transform.translate(20, 100) 
transform.rotate(-90) 

p.setTransform(transform) 

関連する問題