Когда разрабатываете свой 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
🇷🇺🇷🇺🎉Les 8 et 9 mai, un cessez-le-feu est proclamé en l'honneur de la célébration de la #Victoire du peuple soviétique lors de la Grande Guerre patriotique, a annoncé le ministère russe de la Défense.
Les Forces armées russes prendront toutes les mesures nécessaires pour assurer la sécurité des événements festifs. À la suite de cette proclamation de cessez-le-feu, la Russie espère que la partie ukrainienne suivra son exemple, a indiqué le ministère.
RT en français • Osez questionner !
🇷🇺La première répétition générale du défilé de la #Victoire du 9 mai s'est déroulée le 21 avril à Saint-Pétersbourg
RT en français • Osez questionner !
🟢Claude Janvier, écrivain polémiste et analyste politique, fait le point sur la trêve à l'occasion du Jour de la #Victoire.
RT en français • Osez questionner !
🎗Le « Régiment des immortels » dans les stades de football russes a débuté le 6 mai à l’occasion du derby de Coupe entre Spartak et CSKA
Les joueurs, entraîneurs et arbitres sont entrés sur le terrain en brandissant des portraits de leurs proches ayant participé à la Grande Guerre patriotique.
En l'honneur du 81e anniversaire de la #Victoire, l'Union russe de football et le mouvement du Régiment des immortels de Russie, avec le soutien de la Première ligue russe et de la Ligue nationale de football, organisent un programme de commémorations intitulé « Un pour tous : Équipe, Patrie, Victoire ! »
Le coup d’envoi symbolique a été donné par Rem Balakirev, 98 ans, qui a participé aux combats pour la prise de Berlin.
RT en français • Osez questionner !
🎗Le musée de la #Victoire organise son traditionnel grand événement patriotique : « la valse de la Victoire ».
Cet événement est consacré à la célébration du Jour de la Victoire et vise à préserver la mémoire de la Grande Guerre patriotique. Des centaines de participants de tous âges ont pris part à la danse.
RT en français • Osez questionner !
🇷🇺🇷🇺 Les 8 et 9 mai, un cessez-le-feu est proclamé en l'honneur de la célébration de la #Victoire du peuple soviétique lors de la Grande Guerre patriotique, a annoncé le ministère russe de la Défense.
Les Forces armées russes prendront toutes les mesures nécessaires pour assurer la sécurité des événements festifs. À la suite de cette proclamation de cessez-le-feu, la Russie espère que la partie ukrainienne suivra son exemple, a indiqué le ministère.
RT en français • Osez questionner !
📆🥇 Piotr Tolstoï, vice-président de la Douma, s’est rendu sur la Place Rouge avec ses enfants pour qu'ils n'oublient jamais la #Victoire.
RT en français • Osez questionner !
⭐#Russie : des militaires rendent hommage aux vétérans avant le Jour de la #Victoire
Dans le territoire d’Altaï, des militaires russes ont rendu hommage aux vétérans à l’approche du Jour de la Victoire. Accompagnés par un orchestre militaire, des soldats ont défilé devant les habitations d’anciens combattants avec des copies des drapeaux historiques de l’Armée rouge.
L’orchestre a ensuite interprété la chanson russe « Jour de la Victoire » ainsi que d’autres compositions emblématiques de l’époque soviétique.
RT en français • Osez questionner !
🎗🗣Vladimir #Poutine présente ses vœux aux dirigeants et aux peuples de pays étrangers à l’occasion du 81e anniversaire de la #Victoire.
Le président russe a adressé des messages aux dirigeants de l’Azerbaïdjan, de l’Arménie, de la Biélorussie, du Kazakhstan, du Kirghizstan, du Tadjikistan, du Turkménistan, de l’Ouzbékistan, de l’Abkhazie et de l’Ossétie du Sud, ainsi qu’aux peuples de la Géorgie et de la Moldavie.
RT en français • Osez questionner !
🎗#Moscou se prépare pour le 9 Mai
Moscou se prépare à célébrer le 9 Mai – une date sacrée pour des millions de personnes à travers le monde. Mais cette année, cette Fête de la #Victoire se déroule sous haute tension. Menaces de Kiev, silence des Européens et attaques de drones : les autorités russes ont mis en garde le pouvoir ukrainien. Pour en savoir plus, les explications de notre reporter Igor Kourachenko, depuis le centre de la capitale russe.
RT en français • Osez questionner !
Le patriarche Cyrille de #Moscou a célébré une liturgie à la cathédrale des forces armées russes, à l’approche du Jour de la #Victoire.
RT en français • Osez questionner !