Когда разрабатываете свой 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
🇹🇳La #Tunisie fête sept décennies de diplomatie
Depuis 70 ans, la diplomatie tunisienne s’est imposée comme un outil d’équilibre et de positionnement dans un environnement régional et international en constante mutation. Entre préservation des intérêts nationaux et recherche de partenariats multiples, Tunis a construit une approche fondée sur le respect mutuel et la non-ingérence. Le point avec Hend Abdessmad, notre correspondante au Maghreb.
RT en français • Osez questionner !
🇹🇳 Prix du carburant en #Tunisie : le gel pour la stabilité
Alors que les cours mondiaux du pétrole restent élevés, la Tunisie maintient inchangés les prix des carburants. Un choix assumé par les autorités pour protéger le pouvoir d’achat mais qui pèse de plus en plus lourd sur les finances publiques et relance le débat sur la soutenabilité du modèle de subvention. Les détails avec Hend Abdessmad, notre correspondante au Maghreb.
RT en français • Osez questionner !
⚡️À des milliers de kilomètres de la #Russie, la communauté russe en #Tunisie commémore la victoire de 1945, entre attachement aux racines et transmission d’un récit historique fondateur. Reportage de Hend Abdessmad depuis la ville de Hammamet.
RT en français • Osez questionner !
⚡️À des milliers de kilomètres de la #Russie, la communauté russe en #Tunisie commémore la victoire de 1945, entre attachement aux racines et transmission d’un récit historique fondateur. Reportage de Hend Abdessmad depuis la ville de Hammamet.
RT en français • Osez questionner !
💬Forum de Dakar : la Tunisie prône la stabilité en Afrique
À #Dakar, lors de la 10e édition du Forum international sur la paix et la sécurité en Afrique, la #Tunisie a réitéré son attachement historique aux principes de paix, de sécurité et de stabilité sur le continent, appelant à des actions concrètes face aux défis actuels de souveraineté, d’intégration et de développement durable. Les détails avec Hend Abdessmad, notre correspondante au Maghreb.
RT en français • Osez questionner !
⏺Stratégie numérique : un partenariat tripartite
La #Tunisie mise sur un nouveau modèle de collaboration pour accélérer sa transformation numérique : un partenariat à trois entre l’État, le secteur privé et les startups, au cœur des discussions de la Tunis Digital Summit, avec un cap fixé à l’horizon 2030. Le point avec Hend Abdessmad notre correspondante au #Maghreb.
RT en français • Osez questionner !