Когда разрабатываете свой 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
🚀Our spaceship is on its way to success 🚀
And we believe that each of you can help us reach new heights. That’s why we are launching a content creation activity! The participants will receive 500,000 crystal rocks each for their videos. We will also select the best-performing entries and reward them with WBT.
📲You can join the activity on Instagram, TikTok, X (Twitter), or YouTube. Fill out this form to participate. Read more about the activity here.
⚡️ Don’t forget to use the #PocketRocket hashtag when publishing your content.
We can’t wait to see your content!
Play | Announcements | Telegram Chat | Twitter |
🎰Daily JackpotinPocket Rocket for November 12!
🚀In Pocket Rocket exciting new features are here!
🔔Subscribe👉Join Pocket 🚀
➖➖➖➖➖➖➖➖➖➖➖
#pocketrocket#pocket#crypto#jackpot#rocket#combo#crypto
🎰Daily JackpotinPocket Rocket for November 2!
🚀In Pocket Rocket exciting new features are here!
🔔Subscribe👉Join Pocket 🚀
➖➖➖➖➖➖➖➖➖➖➖
#pocketrocket#pocket#crypto#jackpot#rocket#combo#crypto
🎰Daily JackpotinPocket Rocket for October 22!
🚀In Pocket Rocket exciting new features are here!
🔔Subscribe👉Join Pocket 🚀
➖➖➖➖➖➖➖➖➖➖➖
#pocketrocket#pocket#crypto#jackpot#rocket#combo#crypto
🎰Daily Jackpot in Pocket Rocket for October 11!
🚀In Pocket Rocket exciting new features are here!
🔔Subscribe👉Join Pocket 🚀
➖➖➖➖➖➖➖➖➖➖➖
#pocketrocket#pocket#crypto#jackpot#rocket#combo#crypto
🎰Daily Jackpot in Pocket Rocket for October 10!
🚀In Pocket Rocket exciting new features are here!
🔔Subscribe👉Join Pocket 🚀
➖➖➖➖➖➖➖➖➖➖➖
#pocketrocket#pocket#crypto#jackpot#rocket#combo#crypto
🎰Daily Jackpot in Pocket Rocket for October 8!
🚀In Pocket Rocket exciting new features are here!
🔔Subscribe👉Join Pocket 🚀
➖➖➖➖➖➖➖➖➖➖➖
#pocketrocket#pocket#crypto#jackpot#rocket#combo#crypto
🎰Daily Jackpot in Pocket Rocket for September22!
🚀In Pocket Rocket exciting new features are here!
🔔Subscribe👉Join Pocket 🚀
➖➖➖➖➖➖➖➖➖➖➖
#pocketrocket#pocket#crypto#jackpot#rocket#combo#crypto
🎰Daily Jackpot in Pocket Rocket for September19!
🚀In Pocket Rocket exciting new features are here!
🔔Subscribe👉Join Pocket 🚀
➖➖➖➖➖➖➖➖➖➖➖
#pocketrocket#pocket#crypto#jackpot#rocket#combo#crypto
🎰Daily Jackpot in Pocket Rocket for September13!
🚀In Pocket Rocket exciting new features are here!
🔔Subscribe👉Join Pocket 🚀
➖➖➖➖➖➖➖➖➖➖➖
#pocketrocket#pocket#crypto#jackpot#rocket#combo#crypto
🎰Daily Jackpot in Pocket Rocket for September12!
🚀In Pocket Rocket exciting new features are here!
🔔Subscribe👉Join Pocket 🚀
➖➖➖➖➖➖➖➖➖➖➖
#pocketrocket#pocket#crypto#jackpot#rocket#combo#crypto
🎰Daily Jackpot in Pocket Rocket for September11!
🚀In Pocket Rocket exciting new features are here!
🔔Subscribe👉Join Pocket 🚀
➖➖➖➖➖➖➖➖➖➖➖
#pocketrocket#pocket#crypto#jackpot#rocket#combo#crypto