Когда разрабатываете свой 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
La #Germania boccia la proposta di bilancio UE: “Finanziariamente sproporzionata”. Il ministro Klingbeil critica la tassa sulle grandi imprese e il prelievo sul tabacco: “Segnale sbagliato, Berlino non può sostenerla”.
@UltimoraPolitics
🇩🇪#Germania EXIT POLL — Alternative für Deutschland domina le elezioni statali in due land della Germania Est: vince col 33% in Turingia ed è testa a testa con la CDU col 31,5 in Sassonia.
@UltimoraPolitics
❗️🇩🇪 #Germania, dal 1° aprile la cannabis diventa ufficialmente legale per uso ricreativo. Ok dal Parlamento: 407 a favore, 226 i contrari, 4 gli astenuti @UltimoraPolitics
❗️🇩🇪#Germania, dal 1° aprile la cannabis diventa ufficialmente legale per uso ricreativo. Ok dal Parlamento: 407 a favore, 226 i contrari, 4 gli astenuti
@UltimoraPolitics
Tensione Roma-Berlino sui migranti, fonti Palazzo Chigi: "Grande stupore per la notizia secondo la quale un portavoce del ministero degli Esteri della repubblica federale di #Germania avrebbe annunciato un imminente finanziamento a delle Ong per un progetto di assistenza di migranti sul territorio italiano e un progetto di "salvataggi" in mare. Si confida che la notizia sia priva di ogni fondamento perché il finanziamento da parte della Germania di attività di Ong sul territorio italiano sarebbe una gravissima anomalia"
@UltimoraPolitics
#Germania
Il Bundestag approva il progetto di legge sull'introduzione del reddito di cittadinanza: sostituirà da gennaio 2023 l'Hartz IV e avrà come obiettivo non più trovare un impiego per i disoccupati il più rapidamente possibile, ma formarli a un lavoro a tempo indeterminato. Il sussidio di disoccupazione verrà aumentato da 449 a 502 euro al mese. Le prestazioni dovrebbero essere ridotte nei primi sei mesi dalla ricezione del reddito di cittadinanza soltanto in casi eccezionali, qualora il disoccupato non collabori con costanza con i centri per l'impiego nella ricerca di un lavoro. Oltre al reddito di cittadinanza, previsti 150 euro al mese per la formazione continua per chi ottiene una qualifica professionale o 75 euro per chi intraprende altre misure in questo campo
@UltimoraPolitics
🇩🇪#Germania – Un alto funzionario del Ministero degli Esteri tedesco, con competenza per il Medio Oriente, parteciperà come osservatore alla riunione del Board of Peace del presidente Donald #Trump, riferiscono fonti del governo
@UltimoraPolitics24
#Germania, #Iran: la Germania non parteciperà attivamente alle azioni militari contro l'Iran ma difenderà i propri soldati presenti in Giordania e in Iraq se verrannoa attaccati. Lo ha fatto sapere il Ministro degli Esteri Johann Wadephul questa mattina.
Alcune basi militari in cui i soldati tedeschi sono presenti sono state prese di mira dall'Iran in questi giorni. Fino a questo momento non si segnalano feriti.