Когда разрабатываете свой 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
🌐 В 2025 году стартовал 8-й сезон ежегодного международного соревнования уличной культуры и спорта «Kardo».
👥 С 8 апреля по 8 июля пройдут 15 национальных и 30 региональных отборочных этапов в России, а с 21 по 24 августа участники из 53 стран соберутся, чтобы побороться за победу в грандиозном финале конкурса.
🔹 Основная цель соревнования, организованного АНО «Россия — страна возможностей», — найти и поддержать таланты в сфере уличной культуры и спорта по всему миру, а также сформировать единую экосистему взаимодействия между уличной индустрией, обществом и государством.
4️⃣ В этом году премия «Kardo» будет вручаться в четырех форматах (видео, соревнования, общественные проекты, вклад в индустрию) в 12 различных направлениях.
👉🏻 Подробнее о соревновании и регистрации
➡️@worldkardo
#Спорт#Kardo
📣 Lanzamos un grito a los representantes de la cultura callejera de todo el mundo a expresarse en voz alta y mostrar sus capacidades!
Se abrió la inscripción al VIII concurso de la #cultura callejera #KARDO!
Si eres un representante del breaking, hip-hop, skate, kickscootering, BMX, DJ, workout, tricking, graffiti, parkour, freerunning, kick-scootering, rap:
Inscríbete en el sitio web oficial de KARDO hasta el 8 de abril
➡️www.kardoaward.com
🤸♂Demuestra tus habilidades en cualquier dirección de la competición y llega a la gran final de las legendarias batallas y el mayor festival callejero.
‼️Еще есть 10 дней, чтобы стать частью самого масштабного проекта, посвященного поддержке и развитию уличной культуры и спорта «КАРДО»
🛹 В 7 сезоне для участников доступны следующие категории:
• соревнования;
• проекты;
• видео;
• премия.
Конкурс проходит по 11 направлениям: Breaking, Workout, Graffiti, Djing, Parkour и другим.
Покажите свое мастерство и станьте одним из финалистов! Гранд-финал состоится в Ставрополе с 22 по 25 августа.
🛼Регистрация открыта до 17 апреля включительно. Успей подать свою заявку!
✔️ Организаторы: АНО «Россия – страна возможностей», Общероссийская общественная организация уличной культуры и спорта «Улицы России», Правительство Ставропольского края и Северо-Кавказский федеральный университет. При поддержке: Министерства иностранных дел России, Россотрудничества, Федерального агентства по делам молодежи (Росмолодежь), Фонда Президентских грантов, Общественной палаты России.
#РусскийДом#Россотрудничество#RussianHouse#Rossotrudnichestvo#KARDO#KARDO7
📣 Lanzamos un grito a los representantes de la cultura callejera de todo el mundo a expresarse en voz alta y mostrar de lo que son capaces!
🔥 Se abrió la inscripción al concurso de la #cultura callejera #KARDO!
🔍 Si eres un representante del breaking, hip-hop, skate, kickscootering, BMX, DJ, workout, tricking, graffiti, parkour, freerunning:
🖥 Inscríbete en el sitio web oficial de KARDO hasta el 17 de abril:
✔️Graba un vídeo
✔️Publícalo en las redes sociales con los hashtags #KARDO#KARDO7
✔️Sube el enlace a tu cuenta personal en el sitio web de #KARDO
❗️Demuestra tus habilidades en cada dirección de la competición y llega a la gran final de las legendarias batallas y el mayor festival callejero.
🔝 Los #TOP-6 ¡recibirán un viaje con todo incluido 💥 (comidas, alojamiento, desplazamiento) a la Gran Final de #Stavropol!