Когда разрабатываете свой 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
💥Скидка 20% на гамму LIPIKAR и CICAPLASt от La Roche-Posay
LIPIKAR – линейка средств предназначена для гигиены чувствительной и очень сухой кожи склонной к атопическому дерматиту.
CICAPLAST - линейка средств для очищения и мультивосстанавления сверхчувствительной и/или склонной к атопии кожи младенцев, детей и взрослых.
➡️Акция действует с 01.02.23 по 12.02.23. Бронируйте на сайте и забирайте в ближайшей аптеке - https://neopharm.ru/sales/3990
#скидки#акция#неофарм#larocheposay
💥Скидка 20% на гамму LIPIKAR от La Roche-Posay
LIPIKAR – линейка средств предназначена для гигиены чувствительной и очень сухой кожи склонной к атопическому дерматиту.
➡️Акция действует с 16.01.23 по 31.01.23. Бронируйте на сайте и забирайте в ближайшей аптеке https://neopharm.ru/sales/3850
*В акции участвуют все аптеки НЕОФАРМ, кроме аптек, расположенных в аэропортах. Количество акционного товара ограничено. Скидки по акциям не суммируются. Бонусы Спасибо от Сбербанка Вы можете обменять на скидку до 50%.
#скидки#акция#неофарм#larocheposay
⏰ Друзья, осталось всего 2 дня до окончания акции!
Скидка 20% на французскую косметику марки La Roche-Posay.
Бронируйте на сайте и забирайте в ближайшей аптеке: https://neopharm.ru/sales/2476
#larocheposay#лярошпозе#скидки
⏰ Друзья, мы продлеваем акцию до 8 мая!
Скидка 20% на французскую косметику марки La Roche-Posay.
Бронируйте на сайте и забирайте в ближайшей аптеке ➡️https://neopharm.ru/sales/2476
#larocheposay#лярошпозе#скидки
💙 Только 5 дней скидка 20% на французскую косметику марки La Roche-Posay.
Средства для ухода за чувствительной кожей и кожей, склонной к аллергическим реакциям; фоточувствительной кожей; кожей, склонной к покраснениям; проблемной кожей, склонной к акне; жирной кожей; кожей, склонной к атопическому дерматиту; кожей детей и младенцев.
Бронируйте на сайте и забирайте в ближайшей аптеке ➡️https://neopharm.ru/sales/2476
#larocheposay#лярошпозе#скидки
💥Cкидка 15% на линейки LIPIKAR и CICAPLAST от Французского бренда La Roche-Posay
LIPIKAR – линейка средств предназначена для гигиены чувствительной и очень сухой кожи склонной к атопическому дерматиту.
CICAPLAST - линейка средств для очищения и мультивосстанавления сверхчувствительной и/или склонной к атопии кожи младенцев, детей и взрослых.
➡️Скидка действует с 1 по 11 Ноября. Бронируйте на сайте и забирайте в ближайшей аптеке https://neopharm.ru/sales/3524
#larocheposay#неофарм#sales#скидки
Kra247XtW
💥Скидка 20% при покупке гаммы Lipikar и Effaclar косметической марки La Roche-Posay.
🧴Lipikar - Линия средств для очищения и ухода за сухой и очень сухой кожей лица и тела. Продукты этой линии предназначены как для взрослых так и для детей.
🧴Effaclar - Специально разработанная линия для очищения и ухода за проблемной жирной кожей и для борьбы с акне.
❗️Акция действует до 31 Октября. Бронируйте на сайте и забирайте в ближайшей аптеке - La Roche-Posay Скидка 20% на гаммы Lipikar и Effaclar.
*Количество акционного товара ограничено. Скидки по акциям не суммируются. Бонусы Спасибо от Сбербанка Вы можете обменять на скидку до 50%
Реклама. ООО «НЕО-ФАРМ» ИНН 7732121736
#неофарм#lrp#акция#larocheposay
💥Cкидка 25% при покупке двух продуктов бренда La Roche-Posay
❗️Акция действует с 22 по 24 марта. Бронируйте на сайте и забирайте в ближайшей аптеке https://neopharm.ru/sales/4199
*Количество акционного товара ограничено. Наборы и солнцезащитные средства в акции не участвует. Скидки по акциям не суммируются. Бонусы Спасибо от Сбербанка Вы можете обменять на скидку до 50%
#неофарм#скидки#larocheposay#sales#акция
erid: Kra23mkXN
💥Скидка 20% при покупке товаров французского косметического бренда La Roche-Posay
❗️Акция действует до 6 Сентября. Бронируйте на сайте и забирайте в ближайшей аптеке: La Roche-Posay Скидка 20%
*Количество акционного товара ограничено. Скидки по акциям не суммируются. Бонусы Спасибо от Сбербанка Вы можете обменять на скидку до 50%
#неофарм#скидки#lrp#sales#акция#larocheposay
Реклама. ООО «НЕО-ФАРМ» ИНН 7732121736
💥Скидка 20% при покупке гаммы CICAPLAST от косметического бренда La Roche-Posay
❗️Акция действует до 30 Июня. Бронируйте на сайте и забирайте в ближайшей аптеке https://neopharm.ru/sales/5146
*Количество акционного товара ограничено. Скидки по акциям не суммируются. Бонусы Спасибо от Сбербанка Вы можете обменять на скидку до 50%
#неофарм#скидки#lrp#sales#акция#larocheposay
💥Скидка 20% при покупке гамм Toleriane, Rosaliac от косметического бренда La Roche-Posay
❗️Акция действует до 31 Мая. Бронируйте на сайте и забирайте в ближайшей аптеке https://neopharm.ru/sales/4872
*Количество акционного товара ограничено. Скидки по акциям не суммируются. Бонусы Спасибо от Сбербанка Вы можете обменять на скидку до 50%
#неофарм#скидки#lrp#sales#акция#larocheposay
💥Скидка 20% при покупке гамм Physiologique, Toleriane, Rosaliac от La Roche-Posay
❗️Акция действует c 17 по 30 Апреля. Бронируйте на сайте и забирайте в ближайшей аптеке https://neopharm.ru/sales/4431
*Количество акционного товара ограничено. Скидки по акциям не суммируются. Бонусы Спасибо от Сбербанка Вы можете обменять на скидку до 50%
#неофарм#скидки#lrp#sales#акция#larocheposay