Когда разрабатываете свой GUI с помощью PyQt для какого-либо софта бывает необходимо позаимствовать цвета из текущего стиля интерфейса. Например, чтобы правильно раскрасить свои виджеты, подогнав их по цвету. Ведь бывает, что ваш GUI используется в разных софтах. Причём некоторые со светлой темой а другие с тёмной.
По умолчанию стили наследуются, но если вы задаёте какую-либо раскраску для части виджета через свой styleSheet, то требуется ссылаться на цвета текущего стиля.
Как это сделать? Как получить нужный цвет из палитры имеющегося стиля? Это достаточно просто, нужно использовать класс QPalette и его роли.
Например, мне нужно достать цвет текста из одного виджета и применить его в другом как цвет фона (не важно зачем именно так, просто захотелось😊).
Получаем палитру виджета и сразу достаём нужный цвет, указав его роль.
from PySide2.QtGui import QPalette
color = main_window.palette().color(QPalette.Text)
теперь можем использовать этот цвет в стилях
my_widget.setStyleSheet(f'background-color: {color.name()};')
Готово, мы динамически переопределили дефолтный стиль используя текущий стиль окна!
На самом деле есть запись покороче, в одну строку и без лишних переменных. Не очень-то по правилам CSS, но Qt это понимает.
my_widget.setStyleSheet('background-color: palette(Text);')
Этот способ не подходит если вам нужно как-то модифицировать цвет перед применением в своих стилях. В этом случае потребуется первый способ.
Зато он прекрасно сработает в файле .qss, то есть не придётся в коде прописывать раскраску отдельных элементов через ссылки на палитру, всё красиво сохранится в отдельном файле .qss!
QListView#my_widget::item:selected {
background: palette(Midlight);
}
Про имеющиеся роли можно почитать здесь🌍
#qt#tricks
#Italia#Liguria#LaSpezia
Seguiremo questa sera la tribuna elettorale della RAI per le elezioni comunali a La Spezia. A differenza di quanto fatto in Lombardia, in Liguria la RAI ha optato per delle mini-interviste.
@UltimoraPolitics
🇮🇹TESSERAMENTO CPI 26: ultimo appuntamento dell'anno
L'Italia chiama, l'Italia ha bisogno anche di te! Arrivati, prendi parte alla #riconquista, TESSERATI con noi!
📍Vi aspettiamo questo sabato dalle 19:00 all' L'Olandese Volante - Rock Pub , via Genova 288 - #laspezia
NON MANCARE🔥
#Italia#Liguria#LaSpezia
Lorenzo #Viviani (#Lega|ID): "Abbiamo portato a casa il cimitero degli animali. Abbiamo costruito un canile e un gattile comunale che sono talmente belli che sarebbero da visitare."
@UltimoraPolitics
#Italia#Liguria#LaSpezia
Lorenzo #Viviani (#Lega|ID): "A Roma ci vedono come un punto di riferimento, come un bel golfo da visitare."
@UltimoraPolitics
#Italia#Liguria#LaSpezia
Lorenzo #Viviani (#Lega|ID): "Le tasse a La Spezia sono le più basse di tutta la regione Liguria, le abbiamo abbassate."
@UltimoraPolitics
#Italia#Liguria#LaSpezia
Lorenzo #Viviani (#Lega|ID): "Siamo una città più sicura, è la città dove si vive meglio a livello italiano. Le bande giovanili sono legate con politiche sbagliate sull'immigrazione, che hanno trasformato alcuni quartieri in ghetti."
@UltimoraPolitics
#Italia#Liguria#LaSpezia
Lorenzo #Viviani (#Lega|ID): "Ci presenteremo con la lista Lega Liguria Salvini Premier. Io sono anche un parlamentare."
@UltimoraPolitics
#Italia#Liguria#LaSpezia
Sauro #Mannucci (#FdI|ECR): "In futuro vogliamo lavorare sull'uso dei combustibili ecologici all'interno del porto.'
@UltimoraPolitics
#Italia#Liguria#LaSpezia
Sauro #Mannucci (#FdI|ECR): "Abbiamo posto le basi per il turismo, la grande nautica, l'università, il settore difesa."
@UltimoraPolitics
#Italia#Liguria#LaSpezia
Sauro #Mannucci (#FdI|ECR): "Abbiamo una città più pulita, più ordinata, più sicura. Le critiche dell'opposizione sono critiche a prescindere, abbiamo lavorato bene."
@UltimoraPolitics