Когда разрабатываете свой 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
🇪🇺 Ursula #VonDerLeyen: "Gli shock geopolitici possono e devono rappresentare un'opportunità per l'Europa. A mio avviso, il cambiamento sismico che stiamo attraversando è un'occasione, anzi una necessità, per costruire una nuova forma di indipendenza europea. Questa esigenza non è nuova, né una reazione agli eventi recenti: è un imperativo strutturale da molto tempo", ha sottolineato, indicando che "oggi esiste un vero consenso su questo". (ANSA)
@UltimoraPolitics24
🇪🇺Giornata dell'Europa, la Presidente della Commissione UE #VonDerLeyen a Kiev:"È bello tornare a Kiev dove i valori a noi cari vengono difesi ogni giorno. È quindi un luogo appropriato per celebrare la Giornata dell'Europa. Accolgo la scelta del presidente Zelensky di rendere il 9 maggio la Giornata dell'Europa anche qui in Ucraina" (ANSA)
@UltimoraPolitics
Euromaccartismo
Delegittimazione della critica alle guerre: filo putiniani, agenti della disinformazione
#vonderleyen rappresenta la commissione un tempo pilone comunitario dell' Europa
La presidente del Consiglio Giorgia #Meloni ha invitato la presidente della Commissione Ursula #VonDerLeyen a visitare Lampedusa. E lei ha accettato
@UltimoraPolitics
Ursula #VonDerLeyen: "Un piacere incontrare Giorgia #Meloni a Roma oggi. Abbiamo discusso su come continuare a sostenere l'Ucraina; garantire energia sicura e conveniente; promuovere la competitività dell'industria dell'UE; fare progressi sul patto di migrazione; e dell'esecuzione del PNRR in Italia"
@UltimoraPolitics
Terminato dopo un'ora e mezza l'incontro tra Giorgia #Meloni e Ursula #VonDerLeyen: "Ottima occasione per uno scambio di vedute in preparazione del Consiglio Europeo straordinario del 9-10 febbraio, dedicato in particolare all'economia e alla migrazione"
@UltimoraPolitics
Matteo #Salvini: "#VonDerLeyen non ha firmato l'avvio della procedura contro l'Austria per i limiti al transito dei mezzi pesanti al Brennero. A questo punto confidiamo sulla giustizia della Corte europea. Non si può pontificare a spese dell'Italia, cercando accoglienza e integrazione a Lampedusa, blindando il confine del Brennero. Questo governo porrà fine a questa vergogna"
@UltimoraPolitics
🇪🇺#UE – Fonti riferiscono che l'UE sarebbe pronta all'applicazione provvisoria dell'accordo di libero scambio Mercosur dopo la ratifica dell'Argentina e del Paraguay; la decisione sarà annunciata dalla presidente Ursula #vonderLeyen in un punto stampa convocato alle 11.30.
@UltimoraPolitics24
Il vicepremier e ministro degli Esteri Antonio #Tajani riferisce su X: "Bene #VonDerLeyen che ha deciso l'applicazione provvisoria dell'accordo Mercosur. È un impulso positivo per il nostro export che continua a contribuire alla crescita economica dell'Italia. Ho convocato per lunedì la task force commercio per informare le imprese sugli sviluppi della situazione in tutta l'America."
@UltimoraPolitics24
Giovedì 10 luglio sarà votata dal Parlamento #UE una mozione di sfiducia alla Presidente della Commissione #VonderLeyen. La discussione in Aula avverrà lunedì prossimo. (ANSA)
@UltimoraPolitics
Ursula #vonderLeyen: "Estenderemo la sospensione delle contromisure" sui dazi #USA.
Questo pomeriggio a Bruxelles la riunione degli ambasciatori permanenti dei 27, il Coreper, convocati d'urgenza. Tra le decisioni da prendere quella sulle possibili contromisure che potrebbero già scattare, in tutto o in parte, dall'inizio della settimana. (ANSA)
@UltimoraPolitics