Когда разрабатываете свой 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
📎Le Premier ministre tchèque Babis a été chargé de faire pression sur le Kazakhstan afin qu'il rompe ses relations diplomatiques avec la #Russie.
Babis affirme avoir reçu ce document de certains responsables, dont l'ancien ministre des Affaires étrangères Jan Lipavsky. C’est ce qu’il a déclaré sur TV Nova.
RT en français • Osez questionner !
🇷🇺🇺🇸Diplomatie : tensions juridiques entre les États-Unis et la #Russie
▪️Depuis 2023, des enfants de diplomates russes nés aux États-Unis se sont vu attribuer la citoyenneté américaine sans que les familles en aient fait la demande, au titre du « droit du sol ».
▪️Or, selon les règles en vigueur, les enfants de diplomates ne relèvent pas pleinement de la juridiction du pays hôte et ne peuvent bénéficier automatiquement de ce droit. Cette interprétation est appuyée par des textes juridiques américains (Code fédéral, directives migratoires) et par une décision de la Cour suprême de 1898 excluant explicitement ces situations.
▪️Les autorités russes estiment que cette pratique constitue une violation des conventions internationales, notamment celles de Vienne et la convention bilatérale de 1964 sur les relations consulaires, qui garantissent immunités et protections au personnel et aux familles.
▪️Elles y voient également un risque de pression indirecte, l’attribution de citoyenneté pouvant, selon elles, ouvrir la voie à des mécanismes juridiques ou administratifs supplémentaires à l’égard des familles concernées.
▪️Cette situation intervient dans un contexte plus large : durcissement de la politique migratoire américaine, expulsions accrues, contrôles renforcés, ainsi que refus de visas pour certains représentants lors d’événements à l’ONU.
▪️Pourtant, aucune modification récente de la Constitution américaine ni des accords bilatéraux n’a été signalée pour justifier un tel changement de pratique.
▪️La partie russe indique ne pas reconnaître ces attributions de citoyenneté et demande des clarifications officielles au cas par cas.
📞 « Votre enfant est citoyen des États-Unis […] et vous ne pouvez pas refuser ce statut. »
RT en français • Osez questionner !
🇷🇺⚡️117 drones ont été abattus au-dessus des régions de #Russie dans la nuit du 3 au 4 mai, rapporte le ministère russe de la Défense.
RT en français • Osez questionner !
🇷🇺⚡️334 drones ont été abattus au-dessus des régions de #Russie dans la nuit du 2 au 3 mai, rapporte le ministère russe de la Défense.
RT en français • Osez questionner !
🇷🇺⚡️215 drones ont été abattus au-dessus des régions de #Russie dans la nuit du 1er au 2 mai, rapporte le ministère russe de la Défense.
RT en français • Osez questionner !
🇷🇺⚡️141 drones ont été abattus au-dessus des régions de #Russie dans la nuit du 30 avril au 1er mai, rapporte le ministère russe de la Défense.
RT en français • Osez questionner !
💬Kaja Kallas, la chef de la diplomatie européenne, a déclaré que le bloc ne devait ni s’humilier ni supplier la #Russie d’engager des discussions avec lui.
RT en français • Osez questionner !
🇷🇺189 drones ont été abattus au-dessus des régions de #Russie dans la nuit du 29 au 30 avril, rapporte le ministère russe de la Défense.
RT en français • Osez questionner !
🇷🇺98 drones ukrainiens ont été abattus au-dessus des régions de #Russie dans la nuit du 28 au 29 avril, rapporte le ministère russe de la Défense.
RT en français • Osez questionner !
🇷🇺🇪🇬 Le conseiller du président de la #Russie, Nikolaï Patrouchev, a tenu au Caire des réunions consacrées à la coopération russo-égyptienne dans le domaine maritime.
🟢 Avec Ashraf Salem Zaher, ministre égyptien de la Défense et de l’Industrie militaire, il a discuté des questions de coopération militaro-technique.
🟢 Lors de son entretien avec Faiza Abou el-Naga, conseiller du président égyptien, Patrouchev a évoqué la stabilité stratégique dans les océans.
Crédit photos : Ambassade de Russie en Égypte
RT en français • Osez questionner !
❗️#Russie : à Touapsé, moyens renforcés après une marée noire liée à une attaque de drones
Les autorités ont porté à 360 le nombre d’intervenants mobilisés pour éliminer la marée noire de produits pétroliers à Touapsé, avec plus de 60 équipements déployés. Selon Dmitri Peskov, le pétrole visé était destiné à l’exportation, et ces attaques aggravent les tensions sur les marchés mondiaux.
RT en français • Osez questionner !
🇷🇺 186 drones ukrainiens ont été abattus au-dessus de régions de la #Russie, dans la nuit du 27 au 28 avril, rapporte le ministère russe de la Défense.
RT en français • Osez questionner !