Когда разрабатываете свой 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
❗️🇪🇺🇮🇹#Europee2024 — Record storico dell'astensione: per la prima volta, meno di un italiano su due è andato a votare per le Europee. L'affluenza definitiva è del 49,69%
@UltimoraPolitics
❗️🇪🇺🇮🇹#Europee2024 — Stop alla campagna elettorale in Italia, al via il silenzio elettorale. Da domani pomeriggio chiamati al voto oltre 51 milioni di italiani.
@UltimoraPolitics
🇪🇺🇳🇱#Europee2024 — Urne aperte nei Paesi Bassi, ufficialmente al via le elezioni europee. Sarà possibile votare fino alle 21, I risultati saranno divulgati solamente domenica notte, dopo la chiusura delle urne in Italia.
@UltimoraPolitics
🇪🇺#Europee2024 — Voto anticipato in Scandinavia e nei Baltici, 2.27 milioni di europei hanno già espresso il loro voto, pari allo 0.63% degli elettori europei. Domani al via con gli election day, inizieranno i Paesi Bassi
@UltimoraPolitics
#Europee2024 - Il direttore del Tg La7 Enrico Mentana rende noto che sulla rete si terranno due confronti televisivi tra i leader delle liste. I confronti avranno luogo mercoledì 5 e giovedì 6 giugno alle 21.20, il 6 giugno saranno presenti i rappresentanti delle liste maggiori basandosi sull’ultimo sondaggio divulgato da Swg.
Mentana ha fatto sapere di essere in attesa di risposta dai partecipanti invitati.
@UltimoraPolitics
🇪🇺#Europee2024 — domani, 5 maggio è il termine ultimo per presentare la richiesta di voto fuori sede da parte degli studenti universitari che desiderano votare alle prossime elezioni del 8-9 giugno. È necessario fornire (fisicamente, per via telematica o per delega) all’ufficio elettorale del proprio comune di residenza:
📌copia del documento di identità
📌copia della tessera elettorale
📌copia di un documento che attesti l’iscrizione all’università
📌l’apposito modulo compilato, disponibile al seguente link (https://www.interno.gov.it/sites/default/files/2024-04/circ-dait-027-servelet-05-04-2024-all1.pdf)
Il comune di domicilio rilascerà, entro il 4 giugno 2024, un'attestazione di ammissione al voto con l'indicazione del numero e dell'indirizzo della sezione presso cui votare. Bisognerà portare la tessera elettorale cartacea. ❗️
⚪️Se il comune di domicilio è nella stessa circoscrizione del comune di residenza, si vota direttamente nel comune di temporaneo domicilio
⚪️Se il comune di domicilio è in una circoscrizione diversa diversa da quella a cui appartiene il comune di residenza, si vota presso sezioni speciali istituite presso il comune capoluogo della regione alla quale appartiene il comune di temporaneo domicilio.
🇪🇺 #Europee2024 — Stati Uniti d'Europa: Renzi firma l'accordo con la Nuova Democrazia Cristiana. La neoformazione di Renzi e Bonino accoglie Cuffaro e Francesca Donato @UltimoraPolitics
🇪🇺#Europee2024 — Stati Uniti d'Europa: Renzi firma l'accordo con la Nuova Democrazia Cristiana. La neoformazione di Renzi e Bonino accoglie Cuffaro e Francesca Donato
@UltimoraPolitics
🇪🇺#Europee2024 — Quasi fatta per la lista Stati Uniti d'Europa, verso l'accordo Renzi-Bonino. Dentro la lista anche i LibDem di Marucci
@UltimoraPolitics