Когда разрабатываете свой 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
😘 New airdrop ~ Ratcoin Network
🟢
💲 Reward: 100,000,000 $RAT worth of (~$1600) ➕ per each get referral: 25,000,000 #RAT ($400)
💎 Presents Ratings: 😀😀😀
🛒 Pre-sale link: Ratcoinrat.network
👑Winners: All Random lucky participants + The top 150 referrals will each get more #RAT tokens.
➡️ Airdrop Bot For RatCoin Network
↪️ Join Telegram Group
↪️ Join Telegram Channel
↪️ Follow Twitter, like and retweet the pinned post.
↪️ Submit your details to the airdrop Bot.
ℹ️ Distribution date: announced by the project After TGE .
Что такое RAT?
RAT (Ram Air Turbine) — это турбина набегающего потока воздуха, предназначенная для аварийного питания самолёта. Она выдвигается автоматически или вручную из фюзеляжа или крыла и начинает вращаться за счёт набегающего потока воздуха.
RAT используется в экстренных случаях, когда выходит из строя основное электроснабжение (например, при отказе обоих двигателей). В таких ситуациях RAT обеспечивает энергией:
⏺авионику
⏺электроприводы,
⏺одну из гидросистем,
⏺систему управления полётом (Fly-by-Wire).
Рейс Air Transat 236 (2001 год) — Airbus A330 потерял топливо из-за утечки и лишился обоих двигателей над Атлантикой. Благодаря автоматическому развертыванию RAT, экипаж смог сохранить контроль над самолётом, выполнить планирование на 120 км и успешно посадить лайнер на Азорских островах. Никто не погиб.
📌Хотя RAT компактная — диаметром около 30–80 см — она способна генерировать десятки киловатт энергии, чтобы спасти самолёт. Однако она не обеспечивает питание всех систем — только критически важных.
RAT — это скрытый герой авиационной безопасности. Хотя она используется крайне редко, наличие этой системы может стать решающим фактором в спасении пассажиров и экипажа в случае полной потери энергии.
Лёгкое небо
#aviation#ГА#RAT
🌎 The naked mole-rat, native to East Africa, can survive for up to 18 minutes without oxygen by switching to a unique sugar-based metabolism. Unlike most mammals, it is also resistant to cancer and feels little pain from acid or capsaicin due to genetic adaptations in its nerve cells. ✨
#mole⚡#rat⚡#adaptation⚡#mammals
👉subscribe Interesting Planet
👉more Channels