Как на кнопке выровнять иконку по левому краю, а текст по центру?

Создаю приложение на PySide6.
Необходимо: Разместить иконку строго возле левого края,
а текст разместить строго по центру, используя таблицу стилей.

Я накидал первоначальный QSS код, однако не могу выровнять иконку по левому краю, а текст по центру:

QPushButton {
    background-color: #121117; /* Цвет фона в обычном состоянии */
    border-radius: 20px;       /* Радиус закругления углов */
    color: white;              /* Цвет текста */
    qproperty-icon: url("ui/icons/icons8_account_1.svg");
    icon-size: 32px 32px;
    text-align: left;
    padding-left: 40px;
    padding: 0 10px;
}

QPushButton:hover {
    background-color: #372d36; /* Цвет фона при наведении */
}

Вот так это выглядит на данный момент

Вот так это выглядит на данный момент. А должно выглядеть так-же, только текст должен быть по центру.


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

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

Выравнивание icon и text одинаковое, поэтому нет решения с помощью таблицы стилей Qt.

Один из вариантов решения вашей задачи выглядит так (поменяйте импорты на PySide6 и попробуйте):

from PyQt5.Qt import *


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

        self.btn = QPushButton('Панель')
        self.btn.setObjectName('btn')
        self.btn.setMinimumWidth(150)
        self.btn.setMinimumHeight(40)
            
        self.main_layout = QVBoxLayout(self)
        self.main_layout.addWidget(self.btn)
        
        self.label = QLabel(self.btn)
        self.label.setPixmap(QPixmap("Ok.png").scaled(32, 32))
        self.label.move(4, 4)
        

Stylesheet = '''
#btn {
    border-radius: 20px; 
    color: white;
    background-color: #121117;
}
#btn:hover {
    background-color: #372d36; 
} 
#btn:pressed {
    background-color: #575d56; 
}               
'''
    

if __name__ == "__main__":
    import sys
    
    app = QApplication(sys.argv)
    app.setStyleSheet(Stylesheet) 
    window = MainWindow()
    window.resize(300, 300)
    window.show()
    sys.exit(app.exec())

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

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


Ok.png

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

→ Ссылка