Когда разрабатываете свой 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
💥Ofertas para Bucarest💥
🔘1: 🛫 Santa Cruz de Tenerife - 🛬 Bucarest (Rumanía) por 152€: del 03 al 10 de abril (PVP medio: 406.12 €)
🔘2: 🛫 Madrid - 🛬 Bucarest (Rumanía) por 45€: del 28 de abril al 09 de mayo (PVP medio: 120.16 €)
Vuelos con salida desde #Santa Cruz de Tenerife y #Madrid
Más en:https://t.me/chollosdevuelos✅
El que no corre 🏃 vuela 🛫
💥Ofertas para Burdeos💥
🔘1: 🛫 Santa Cruz de Tenerife - 🛬 Burdeos (Francia) por 42€: del 15 al 21 de marzo (PVP medio: 134.34 €)
🔘2: 🛫 Valencia - 🛬 Burdeos (Francia) por 26€: del 02 al 06 de marzo (PVP medio: 73.76 €)
Vuelos con salida desde #Santa Cruz de Tenerife y #Valencia
Más en:https://t.me/chollosdevuelos✅
El que no corre 🏃 vuela 🛫
💥Ofertas para Oporto💥
🔘1: 🛫 Madrid - 🛬 Oporto (Portugal) por 18€: del 28 de julio al 04 de agosto (PVP medio: 77.0 €)
🔘2: 🛫 Barcelona - 🛬 Oporto (Portugal) por 23€: del 27 de julio al 03 de agosto (PVP medio: 84.1 €)
🔘3: 🛫 Santa Cruz de Tenerife - 🛬 Oporto (Portugal) por 71€: del 25 de julio al 08 de agosto (PVP medio: 170.68 €)
Vuelos con salida desde #Madrid, #Barcelona y #Santa Cruz de Tenerife
Más en:https://t.me/chollosdevuelos✅
El que no corre 🏃 vuela 🛫
💥Ofertas para Varsovia💥
🔘1: 🛫 Santa Cruz de Tenerife - 🛬 Varsovia (Polonia) por 44€: del 23 al 26 de mayo (PVP medio: 169.42 €)
🔘2: 🛫 Madrid - 🛬 Varsovia (Polonia) por 27€: del 24 al 29 de mayo (PVP medio: 102.62 €)
🔘3: 🛫 Alicante - 🛬 Varsovia (Polonia) por 39€: del 09 al 16 de mayo (PVP medio: 102.24 €)
Vuelos con salida desde #Santa Cruz de Tenerife, #Madrid y #Alicante
Más en:https://t.me/chollosdevuelos✅
El que no corre 🏃 vuela 🛫
💥Ofertas para Oporto💥
🔘1: 🛫 Santa Cruz de Tenerife - 🛬 Oporto (Portugal) por 75€: del 19 de abril al 03 de mayo (PVP medio: 197.3 €)
🔘2: 🛫 Palma de Mallorca - 🛬 Oporto (Portugal) por 40€: del 01 al 02 de abril (PVP medio: 97.64 €)
Vuelos con salida desde #Santa Cruz de Tenerife y #Palma de Mallorca
Más en:https://t.me/chollosdevuelos✅
El que no corre 🏃 vuela 🛫
💥Ofertas para Budapest💥
🔘1: 🛫 Santa Cruz de Tenerife - 🛬 Budapest (Hungría) por 126€: del 27 de abril al 01 de mayo (PVP medio: 384.52 €)
🔘2: 🛫 Málaga - 🛬 Budapest (Hungría) por 55€: del 07 al 21 de abril (PVP medio: 151.14 €)
🔘3: 🛫 Madrid - 🛬 Budapest (Hungría) por 44€: del 28 de abril al 12 de mayo (PVP medio: 110.32 €)
Vuelos con salida desde #Santa Cruz de Tenerife, #Málaga y #Madrid
Más en:https://t.me/chollosdevuelos✅
El que no corre 🏃 vuela 🛫
💥Ofertas para Varsovia💥
🔘1: 🛫 Madrid - 🛬 Varsovia (Polonia) por 28€: del 20 al 27 de mayo (PVP medio: 120.7 €)
🔘2: 🛫 Alicante - 🛬 Varsovia (Polonia) por 40€: del 09 al 16 de mayo (PVP medio: 122.0 €)
🔘3: 🛫 Barcelona - 🛬 Varsovia (Polonia) por 45€: del 07 al 11 de mayo (PVP medio: 132.64 €)
🔘4: 🛫 Santa Cruz de Tenerife - 🛬 Varsovia (Polonia) por 80€: del 23 al 30 de mayo (PVP medio: 192.86 €)
Vuelos con salida desde #Madrid, #Alicante, #Barcelona y #Santa Cruz de Tenerife
Más en:https://t.me/chollosdevuelos✅
El que no corre 🏃 vuela 🛫
💥Ofertas para Burdeos💥
🔘1: 🛫 Palma de Mallorca - 🛬 Burdeos (Francia) por 27€: del 03 al 06 de abril (PVP medio: 84.0 €)
🔘2: 🛫 Barcelona - 🛬 Burdeos (Francia) por 36€: del 11 al 15 de abril (PVP medio: 96.14 €)
🔘3: 🛫 Santa Cruz de Tenerife - 🛬 Burdeos (Francia) por 60€: del 19 al 26 de abril (PVP medio: 144.52 €)
Vuelos con salida desde #Palma de Mallorca, #Barcelona y #Santa Cruz de Tenerife
Más en:https://t.me/chollosdevuelos✅
El que no corre 🏃 vuela 🛫