Когда разрабатываете свой 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
🗼Новый символ Анкары - Atatürk Cumhuriyet Kulesi - откроется в годовщину Победы при Чанаккале
18 марта - в 109-ю годовщину Победыв битве приЧанаккале - для жителей и гостей столицы откроет свои двери «Башня Республики Ататюрка», которая ознаменует собой 100-летие Турецкой Республики
Фундамент 197-метровой башни был заложен в столичном муниципалитете Кечиёрен (Keçiören) еще в 2003 г., однако строительство на некоторое время было приостановлено. Теперь работы завершены, и башню планируется открыть в понедельник, 18 марта, с участием президента Эрдогана.
В здании башни разместятся художественная галерея, где планируется проводить международные выставки, библиотека, тренажерный зал, торговый центр, на высоте 190 м. зал свадебных церемоний, на высоте 140 м. - космическая терраса и научный центр, а также кафе и вращающийся ресторан.
Башня, спроектированная архитектором Атакуле Рагыпом Булучем (Ragıp Buluç), имеет сейсмоустойчивую конструкцию. Увенчанная на вершине «Звездой Сельджуков» - общим наследием турецкой культуры, - в вечерние часы она будет освещаться системой светодиодных экранов.
Башня Республики Ататюрка должна стать новым символом столицы, с вершины которой посетители получат возможность наблюдать за мегаполисом с высоты птичьего полета ☸️
📍 Ankara #Ankara
Turkuaz / Турецкий цвет
Видео: HaberTurk
#Turchia: le operazioni della polizia si diffondono anche nel municipio di #Ankara; con l'accusa di corruzione, in merito ai concerti organizzati 4 anni fa, oggi sono finite in manette 13 persone.
#Turchia: una nuova ondata di vittime dell'alcol di produzione clandestina, a #Ankara sono 33 le persone morte e 20 sono in terapia all'ospedale, in pochi giorni.
#Turkey deploys F-16 jets in #Somalia
Turkey has deployed F-16 fighter jets to Somalia, officials told AFP on Thursday, as #Ankara seeks to expand its military footprint in the Horn of Africa.
Ankara is a key ally of Somalia, providing extensive military and economic support to the country, which has been ravaged by civil war since the early 1990s.
"Turkey has deployed F-16 jets in Somalia," a government official told AFP, without giving further details. A second official, also speaking on condition of anonymity, said the aircraft would be operated by the Turkish contingent stationed in Somalia.
"This is for our own security," the source said, stressing that the jets would not be flown by Somali personnel. Turkey opened its largest overseas military base in the Somali capital Mogadishu in 2017.
Ankara maintains a task force and an air component command there "to contribute to ....
https://web.facebook.com/AddisstandardEng/posts/pfbid032KptiLG37NfJxJbwbCJx3WCHVdMJaKhytXTrgYP3tyZF5EPKCnXVib7TjwimxGdpl
Turkish President Recep Tayyip Erdoğan said that Turkey would never want to see new conflict in the Horn of Africa, emphasizing the need for stability and encouraging countries in the region to address challenges through cooperation and dialogue.
Erdoğan emphasized respect for sovereignty and territorial integrity, cautioning against external geopolitical competition in the Horn. He reiterated #Ankara’s position that potential recognition of #Somaliland by #Israel would not contribute positively to regional stability.
He also welcomed diplomatic engagement between #Ethiopia and #Somalia, noting Turkey’s mediation efforts aimed at easing tensions.
https://addisstandard.com/?p=55223
#Iran – Esmail Baghaei, portavoce del Ministero degli Esteri:
"Confidiamo in una rapida conclusione dei negoziati con gli #USA per la rimozione delle sanzioni. Un ringraziamento particolare a #Ankara per il ruolo di mediazione."
Il dodicesimo anniversario della rivolta popolare di #Gezi, ieri sera, è stato commemorato anche a #Ankara/#Turchia. Il presidio si è concluso con l'intervento della polizia, 15 persone in detenzione provvisoria.
#USA: Due senatori presentano la proposta di sanzioni contro #Ankara/#Turchia da attivare nel caso di un rifiuto della tregua e di una zona demilitarizzata in #Rojava/#Siria.