Когда разрабатываете свой 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
🌍 Over 90% of the world’s plastic is not recycled, and much ends up in the oceans. Ocean plastic has been found in Arctic ice and inside some of the deepest-living sea creatures. ✨
#pollution⚡#environment⚡#oceans⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Russia’s Lake Karachay is so contaminated from past nuclear waste that standing on its shore for just an hour could be fatal—one of the most polluted lakes on the planet. ✨
#rivers⚡#lakes⚡#pollution⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Air pollution now causes more deaths worldwide than unsafe water or malaria, with tiny particles harming lungs and hearts. Even remote regions like the Himalayas register rising airborne pollutants. ✨
#pollution⚡#health⚡#climate⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 The Great Pacific Garbage Patch is a floating area of plastic and debris in the Pacific Ocean, now estimated to be more than twice the size of Texas. It affects sea life far beyond its borders. ✨
#pollution⚡#ocean⚡#plastics⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography🌍
🌍 The Great Pacific Garbage Patch, a swirling mass of plastic debris, now covers an area larger than Germany. Ocean currents trap millions of tons of waste here, creating a persistent global pollution hotspot. ✨
#pollution⚡#oceans⚡#plastics⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Light pollution from cities is so widespread that more than 80% of the world's population can no longer see the Milky Way at night, affecting wildlife and our connection to the night sky. ✨
#environment⚡#pollution⚡#light⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography🌍
🌍 Tiny plastic particles, called microplastics, have been found in remote places like Arctic snow and deep-sea trenches, showing how far pollution can travel across the planet. ✨
#environment⚡#pollution⚡#microplastics⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography🌍
🌍 Air pollution is now the world’s leading environmental health risk, causing more than 6 million early deaths yearly—fine particles from burning fuel can travel and harm people far from their source. ✨
#pollution⚡#health⚡#global⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
https://t.me/kamissokosekou3
⚠️ Falémé : pollution alarmante, un fleuve vital en danger
Le fleuve Falémé, essentiel entre Mali, Sénégal et Guinée, est fortement menacé par la pollution liée à l’activité minière.
Présence de cyanure, raréfaction des poissons, risques sanitaires : la situation inquiète particulièrement dans la région de Kéniéba.
👉 Faut-il renforcer les contrôles miniers pour sauver la Falémé ? Réagissez et partagez.
NB: image d'illustration générée par IA.
#Mali#Environnement#Faleme#Pollution#Afrique#ecologie
La rédaction