после каждого письма.

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

Из того, что я прочитал, однако, нужно повторно реализоватьpaintEvent () обработчик, создание и вращение QPainter (). Однако я не могу понять, как это сделать для того QString или QPushButton, которые мне нужны. Я предполагал, что QPaintEvent будет иметь атрибут «отправитель», как и сигналы, но это не так. Все, что я могу получить от этого события, это QRect или QRegion.

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

Мру, тут ниже предложенонекоторый пример C ++, который полностью переопределяет QPushButton. Поскольку я понятия не имею о C ++ и мне не нужно полное переопределение, я попытался переопределитьpainEvent() обработчик в 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_())

Ответы на вопрос(3)

Ваш ответ на вопрос