после каждого письма.
ел бы --- с 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_())