PyQT: поверните QLabel так, чтобы он располагался по диагонали, а не по горизонтали - PullRequest
2 голосов
/ 21 сентября 2010

Я работаю над приложением с сенсорным экраном, где пространство графического интерфейса очень ограничено.Я бы хотел немного повернуть QLabel, чтобы он был либо вертикальным, либо немного смещенным по диагонали.Какие-либо предложения?Я не смог найти ничего подходящего в интерфейсе QLabel.

Большое спасибо!

Ответы [ 2 ]

3 голосов
/ 21 сентября 2010

QLabel не делает этого.Но вы можете легко создать свой собственный виджет, содержащий немного текста:

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()

Другой вариант - нарисовать QGraphicsView, тогда у вас будет возможность отображать реальные виджеты (то есть QLabel) черезлюбое преобразование координат.

2 голосов
/ 15 декабря 2014

Я использовал этот пост, чтобы найти другое решение, которое, я думаю, может быть лучше. Вот оно:

class VerticalLabel(QLabel):

    def __init__(self, *args):
        QLabel.__init__(self, *args)

    def paintEvent(self, event):
        QLabel.paintEvent(self, event)
        painter = QPainter (self)
        painter.translate(0, self.height()-1)
        painter.rotate(-90)
        self.setGeometry(self.x(), self.y(), self.height(), self.width())
        QLabel.render(self, painter)

    def minimumSizeHint(self):
        size = QLabel.minimumSizeHint(self)
        return QSize(size.height(), size.width())

    def sizeHint(self):
        size = QLabel.sizeHint(self)
        return QSize(size.height(), size.width())
...