Я бы хотел --- с 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_())