Когда разрабатываете свой 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
🇩🇪#Germania — trovato l’accordo tra #SPD e #CDU. Il 16 dicembre ci sarà il voto di fiducia al cancelliere Scholz, che farà cadere ufficialmente il governo, attualmente retto solo da socialdemocratici e verdi. Dopodiché elezioni nazionali il 23 febbraio.
@UltimoraPolitics
#Elezioni#Germania#Regionali#SchleswigHolstein
Exit poll: la #CDU|EPP avrebbe vinto 34 seggi, solo uno in meno della maggioranza assoluta.
@UltimoraPolitics
#Europa#UE
Ursula #VonDerLeyen (#CDU|EPP): "La guerra di aggressione di Putin contro l'Ucraina evoca il motivo per cui domani celebriamo la Giornata dell'Europa. 72 anni fa nasceva la nostra pacifica e prospera Europa. Oggi siamo uniti e forti per gli ucraini che desiderano un futuro in libertà. Un futuro in Europa."
@UltimoraPolitics
🇩🇪 #Germania - Si è votato per il rinnovo del parlamento in Baden-Württemberg, ecco gli exit poll: i #Verdi in testa al 31-32%, seguiti da #CDU al 30%. #AfD al 18%, raddoppiando il risultato del 2021. @UltimoraPolitics24
🇩🇪#Germania - Si è votato per il rinnovo del parlamento in Baden-Württemberg, ecco gli exit poll: i #Verdi in testa al 31-32%, seguiti da #CDU al 30%. #AfD al 18%, raddoppiando il risultato del 2021.
@UltimoraPolitics24
Elezioni #Germania, nel parlamento federale 19 deputati nati in Germania dai genitori di cittadinanza turca (1 in più rispetto alla legislatura precedente); con #SPD, #DieLinke, #CDU, #CSU e #Grune.
#UE#Europa#EuroParlamento
Con 370 voti favorevoli, 282 contrari e 36 astensioni, l'Europarlamento ha approvato la Commissione Europea di Ursula #VonDerLeyen (#CDU|EPP), che entrerà in carica il 1° dicembre.
@OsservatorioEsteri
#Elezioni#Germania#Regionali#SchleswigHolstein
Exit poll di Infratest dimap:
Tasso di approvazione del governo uscente (#CDU-#Grüne-#FDP): 75%
@UltimoraPolitics
🇩🇪 #Germania - Oggi si insedia il governo #Merz, frutto di un alleanza tra #CDU (cdx, che ha vinto le elezioni) e #SPD (csx). La spartizione dei ministeri comprende: interni e esteri alla #CDU, difesa (con l'unica conferma il ministro uscente #Pistorius) e…
🇩🇪#Germania - Oggi si insedia il governo #Merz, frutto di un alleanza tra #CDU (cdx, che ha vinto le elezioni) e #SPD (csx). La spartizione dei ministeri comprende: interni e esteri alla #CDU, difesa (con l'unica conferma il ministro uscente #Pistorius) e finanze all'#SPD.
@UltimoraPolitics
#Europa#UE
Ursula #VonDerLeyen (#CDU|EPP): "Congratulazioni Kalush Orchestra e Ucraina per la vittoria dell'#Eurovision. Stanotte la tua canzone ha conquistato il nostro cuore. Celebriamo la tua vittoria in tutto il mondo. L'UE è con te."
@UltimoraPolitics