Когда разрабатываете свой 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
🧹Dyson faqat fen yoki "pilesoschi" emas!
🎧 OnTrac deb nomlangan ushbu quloqchinni o'zingizga yoqqandek ranglarda yig'ib olishingiz mumkin. Ammo, umumiy 4 ta: Aluminum, Copper, Ceramic Cinnabar va Black Nike ranglarida taqdim etilarkan.
ℹ️ USB Type-C portiga tushadigan raqamli quloqchin 6 Hz dan 21 000 Hz gacha bo'lgan tovushlarni yangrata oladi. To'liq quvvati bilan 55 soatgacha ishlab berolarkan.
💸 Narxi $499,99 ekan. Arziydimi?
➡️#dyson | Birinchi raqamli IT-Blog
Еда становится более технологичной продукцией, чем фены и пылесосы
#Dyson сегодня — один из крупнейших сельскохозяйственных производителей в Англии. Компания обрабатывает примерно 13,5 тыс. га земли в различных частях страны под проектом цифровизации от xFarm Technologies. Недавно в 📍Каррингтоне была запущена супер-современная теплица для выращивания 🍓клубники на 10,5 га.
Вряд ли авторы модной теории XX-го века об ограниченности земли и других ресурсов при растущем населении представляли себе такое.
@foodoutlook
✂️ ¡Jueves de marcas premium y precios mini!
Hoy tenemos los dos extremos: el lujo del Dyson Supersonic con un descuento raro de ver (31% menos) y el chollo absoluto de una camiseta Levi's por solo 11,4€. Además, básicos para el hogar como Ariel y una cafetera Monix de inducción por menos de 10€. ¡Aprovecha! 💇♀️👕
👇 Selección del día:
🔥 Dyson Supersonic Origin Secador de Pelo por 299€ (-31% dto)
amzn.to/4rL12jA
🔥 LEVIS Camiseta Fields of Rye por 11,4€ (-54% dto)
amzn.to/3MA1Etz
🔥 Monix Inducción Cafetera Italiana por 9,9€ (-44% dto)
amzn.to/40a5bSk
🔥 Xiaomi 22.5W Power Bank 20000mAh por 16,9€ (-15% dto)
amzn.to/4qt9qDz
🔥 Plancha Vapor Vertical 2 en 1 por 19,9€ (-43% dto)
amzn.to/4r6zLbw
🔥 Ariel Detergente Lavadora 60 Lavados por 14€ (-32% dto)
amzn.to/4reZcry
#Dyson#Levis#Hogar#OfertasAmazon#Ahorro
🎧Dyson has released its first headphones. Advanced noise cancellation. 55 hours of audio without recharging. And the most inexplicable feature - more than 2000 color options.
#Dyson#Headphones#Technology
MARKHEMIST
Would you try them?