Когда разрабатываете свой 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
Luigi Di Maio (#IC): "Non ci sono se, ma o scuse da accampare. Abbiamo perso. Gli Italiani non hanno considerato abbastanza maturo e valido il nostro progetto politico".
@UltimoraPolitics
Новий графік руху: Укрзалізниця прискорила поїзди до Варшави
Прямий рейс №67/68 Київ — Варшава, що сполучає дві сусідні столиці, отримав у новому графіку 2025-2026 прискорення на більш ніж 2 години.
🕐 Тепер відправлення з Києва о 19:51 — прибуття до Варшави — о 09:43. Зворотно поїзд вирушає о 18:41 з Варшави, а прибуває до Києва о 09:49.
📌 14 грудня варшавський поїзд прибуватиме та вирушатиме і з головного вокзалу польської столиці: Варшави Центральної. Там можна зручно пересісти на громадський транспорт по місту.
У новому графіку також повністю оновлений поїзд №23/34 Київ — Холм — тепер ним можна найшвидше дістатися до Варшави з пересадкою.
🕐 Відправлення з Києва о 21:57 — у Холмі о 8:08. А вже о 8:38 з Холма відправляється #IC 2802 Gorski на Щецин через Варшаву на Познань. Прибуття до Варшави Центральної об 11:19.
Impegno Civico (#IC) di #DiMaio pubblica un sito web (https://www.tagliabollette.eu/) per calcolare il risparmio in bolletta con la proposta di copertura dell’80% del costo della stessa da parte dello Stato.
@UltimoraPolitics
#Italia#Elezioni2022
Luigi #DiMaio (#IC): "In vista della presentazione del progetto politico di domani posso dirvi il nome: è Impegno Civico e rappresenta un principio di responsabilità civica evocato ieri da Papa Francesco"
@UltimoraPolitics
#Elezioni2022 Domani in prima serata, alle 21.30 su Rai 1, speciale "Porta a Porta" con i principali leader dei partiti che partecipano a questa campagna elettorale. Ospiti di Bruno Vespa, nell'ordine: 📍 Luigi #DiMaio (#IC) 📍 Silvio #Berlusconi (#FI) 📍 Giorgia…
#Elezioni2022
Domani in prima serata, alle 21.30 su Rai 1, speciale "Porta a Porta" con i principali leader dei partiti che partecipano a questa campagna elettorale. Ospiti di Bruno Vespa, nell'ordine:
📍 Luigi #DiMaio (#IC)
📍 Silvio #Berlusconi (#FI)
📍 Giorgia #Meloni (#FdI)
📍 Giuseppe #Conte (#M5S)
📍 Carlo #Calenda (#Azione/#IV)
📍 Matteo #Salvini (#Lega)
📍 Enrico #Letta (#PD)
@UltimoraPolitics