Как выровнять текст кнопки по вертикали?

Недавно начал изучать PyQt и Qt Designer в частности, но столкнулся с проблемой.

Я хочу создать кнопку со знаком + по середине.

Для этого я создал QPushButton и добавил на нее текст +.
Как понятно из картинки ниже, текст смещен к низу кнопки.

Как можно его расположить в середине?

QPushButton с текстом "+"б смещенным вниз от центра


Что я пробовал:

vertical-align: center; - эффекта нет
text-align: center;     - выравнивает, но только по горизонтали
margin: 10px;           - желаемого результата тоже не дает (см картинку ниже)

введите сюда описание изображения

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


Ответы (1 шт):

Автор решения: S. Nick

Это не просто, если вы сильно изменяете размеры font. Расположение текста основано на шрифте "bounding rectangle". В Qt Designer вы такого не сделаете.

Вот вам простой вариант:

import sys
from PyQt5.Qt import *


class Window(QWidget):
    def __init__(self):
        super().__init__()

        layout = QHBoxLayout(self)
        layout.addWidget(QPushButton(
            objectName="BlueButton",     
            clicked=lambda: print('Hello'))
        )


StyleSheet = '''
QPushButton { 
    border-image: url(plus.png); 
}
#BlueButton {
    background-color: #2196f3;
    min-width:  100px;
    max-width:  100px;
    min-height: 100px;
    max-height: 100px;
    border-radius: 50px;
}
#BlueButton:hover {
    background-color: #64b5f6;
}
#BlueButton:pressed {
    background-color: #bbdefb;
}
'''        
        

if __name__ == "__main__":
    app = QApplication(sys.argv)
    app.setStyleSheet(StyleSheet)
    w = Window()
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения


plus.png

введите сюда описание изображения

→ Ссылка