Когда разрабатываете свой 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 question énergétique prend de l'ampleur en #Europe
Depuis que l'Ukraine a interrompu le transit du gaz russe, la question énergétique devient de plus en plus alarmante pour les Européens. Les détails avec notre reporter Antoine Cléraux.
RT en français • Osez questionner !
🇪🇺#EuropeВ 3х странах Европы за сутки выявили более 100 000 новых случаев коронавируса (в каждой из стран) ⚠️☝️
💬 Как только стали объявлять о завершении пандемии, за последние сутки в Италии выявили 132 000 новых случаев ковида.
💬 Аналогичная ситуация в Германии: инфекцию обнаружили у 130 000 человек,
💬 Во Франции – 119 000 граждан заболело ковидом.
⏺Qu’en est-il réellement des « drones russes » qui effraient tant l'#Europe ?
La « menace russe » semble être devenue l'explication par défaut de tous les phénomènes en Europe. Les autorités européennes accusent la #Russie bien avant d'avoir obtenu le moindre détail, et ces accusations s'avèrent souvent – comme on pouvait s'y attendre – infondées. Les précisions de notre reporter Antoine Cléraux.
RT en français • Osez questionner !
🗣L’#Europe discute du transfert de composants d’armes nucléaires à l’#Ukraine
Selon la diplomatie russe, l’Europe a discuté du transfert de composants d’armes nucléaires à l’Ukraine. La menace nucléaire est-elle une réalité ? Les précisions avec notre reporter, Daria Vaganova.
RT en français • Osez questionner !
#Europe#UE
La Commissione Europea valuta la possibilità di creare un secondo recovery fund per l'energia. In questo ore giro di consultazioni tra stati membri per sondare la fattibilità della proposta.
@UltimoraPolitics
🇺🇸États-Unis : stocks sous pression
Selon The New York Times, la guerre contre l’#Iran a entraîné une consommation massive de munitions américaines, notamment plus de 1 100 missiles JASSM-ER, ainsi qu’un volume élevé de Tomahawk, Patriot et ATACMS.
Face à cette intensité, le Pentagone a dû redéployer des équipements depuis l’#Europe et l’Asie vers le Moyen-Orient, réduisant sa marge de manœuvre sur d’autres théâtres. Le coût du conflit est estimé entre 28 et 35 milliards de dollars, dont 5,6 milliards dès les premiers jours.
La reconstitution des stocks s’annonce lente et complexe, posant la question de la capacité des États-Unis à soutenir durablement plusieurs conflits à haute intensité.
RT en français • Osez questionner !
The name Italy comes from the Oscan(an extinct southern Italy language) word víteliú, meaning “calf land,” perhaps because the bull was a symbol of the Southern Italian tribes.
@googlefactss#nowyouknow#europe
🇨🇭🇷🇺🇺🇸🇪🇺 Une image de Vladimir Poutine et Donald Trump, entourés de dirigeants européens de taille réduite, a été publiée par le journal suisse NZZ.
L'article qui suit est intitulé "Trump, Poutine et beaucoup de nains: pourquoi l'Europe ne grandit pas". Selon le journal, l'Europe n'est pas un partenaire qui traite d'égal à égal avec les États-Unis et "ne le sera jamais".
#russie#europe#étatsunis
❗️L’#Ukraine demande de nouveau que l’#Europe la finance
À Kiev, le budget national a été calculé en prévision de la poursuite du conflit militaire en 2026. Mais il y a un bémol... Zelensky demande à ses alliés occidentaux une somme deux fois supérieure à celle prévue dans le projet de budget national. Les détails avec notre reporter, Igor Kourachenko.
RT en français • Osez questionner !