Как повернуть qpushbutton?

Я бы хотел --- с Python и Qt4 --- повернуть QPushbutton (или, по крайней мере, его текст), так что он может стоять вертикально. Я видел Некоторые документация в Интернете , но я не мог сделать особого смысла из этого --- это в C, и я неграмотворной.

От того, что я прочитал, хотя нужно повторно реализовать Paintevent () обработчик () . Однако я не могу выяснить, как это сделать для одного QSTRING или QPushbutton, которую мне нужно только. Я предположил, что QpaintEvent будет иметь атрибут «отправителя», как делают сигналы, но это не так. Все, что я могу получить от этого события, это qrect или Quegion.

Как я могу узнать событие, специфичное для моей кнопки или его этикетки?
Или, потому что это вопрос действительно, как вращать qpushbutton?

МРУ, приведенная ниже предложена . Некоторые пример C ++ , которые полностью воспринимают QPushbutton. Поскольку я понятия не имею никакой подсказки о C ++, и так как мне не очень нужна полная повторное возмещение, я пытался переоценить Deanvent () обработчик в Python, основанный на этом примере.

Вот что я перевел, но не работает: \

#!/usr/bin/env python


from PyQt4 import QtGui, QtCore
import sys



class RotatedButton(QtGui.QPushButton):
    def __init__(self, text, parent, orientation = "west"):
        QtGui.QPushButton.__init__(self, text, parent)
        self.orientation = orientation

    def paintEvent(self, event):
        painter = QtGui.QStylePainter(self)
        if self.orientation == 'west':
            painter.rotate(90)
        elif self.orientation == 'east':
            painter.rotate(270)
        else:
            raise TypeError
        painter.drawControl(QtGui.QStyle.CE_PushButton, self.getSyleOptions())


    def getSyleOptions(self):

        options = QtGui.QStyleOptionButton()
        options.initFrom(self)        
        size = options.rect.size()
        size.transpose()
        options.rect.setSize(size)
        options.features = QtGui.QStyleOptionButton.None
        options.text = self.text()
        options.icon = self.icon()
        options.iconSize = self.iconSize()
        return options


class Main(QtGui.QFrame):
    def __init__(self):
        QtGui.QFrame.__init__(self)

        self.count = 0
        self.application = QtCore.QCoreApplication.instance()
        self.layout = QtGui.QHBoxLayout()
        self.button = RotatedButton("Hello", self, orientation="west")
        self.layout.addWidget(self.button)
        self.setLayout(self.layout)



if __name__ == '__main__':

    application = QtGui.QApplication(sys.argv)    
    application.main = Main()
    application.main.show()
    sys.exit(application.exec_())

6
задан ekhumoro 13 January 2017 в 00:27
поделиться