Как на кнопке выровнять иконку по левому краю, а текст по центру?
Создаю приложение на 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