Когда разрабатываете свой 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
Чего на самом деле не прописано в сырьевой сделке между США и Украиной — так это гарантий безопасности, которые предлагал включить в неё Киев.
Но, во-первых, это в целом нетипичное условие для подобных соглашений, и трудно было ожидать, что оно там появится.
А во-вторых, международные проекты подобного рода содержат вшитые гарантии безопасности даже без их специального оговаривания в тексте. Покажем на примере.
По итогам Зимней войны Советский Союз аннексировал у Финляндии в несколько раз больше территории, чем сумел занять фактически (на приложенной карте ⤴️ зелёной линией примерно показана линия фронта на момент заключения мира). За одним удивительным исключением: регион Петсамо с тамошними никелевыми рудниками был возвращён финнам, несмотря на то, что как раз его-то Красная армия захватила де-факто, причём довольно быстро.
Этот парадокс становится понятнее, если вспомнить о том, что никелевый рудник Петсамо на тот момент принадлежал англо-канадскому акционерному обществу. А ссориться с Лондоном в планы Москвы не входило. Поэтому пришлось вернуть.
Могут возразить: да, но сейчас-то Петсамо включён в состав России под именем Печенгского района! Верно. Потому что за оставшееся время Второй мировой войны Суоми в попытках избежать дальнейшей советизации оказалась на стороне Третьего рейха, тогда как СССР — на стороне Британии, бросив на алтарь общей победы в 30 раз больше солдат. Это настолько смешало все карты, что требования Сталина о передаче ему Петсамо союзники сочли оправданными.
Примерно как если бы сейчас Китай объявил войну США, РФ выступила в качестве их самого мясного союзника, а Украина приняла китайскую сторону. Но до тех пор, пока нечто подобное не случилось, Вашингтону явно не понравятся любые попытки РФ захватить его совместный бизнес.
Ещё один пример. Когда пригожинцы в Сирии в феврале 2018 попытались кавалерийским наскоком захватить газовый завод Коноко под Дейр-эз-Зором, находившийся под контролем союзных США курдов, американская армия моментально размолотила вагнерьё в кровавый фарш ещё на дальних подступах. Это были крупнейшие единовременные потери россиян за все годы сирийского конфликта. И ни один путинский чиновник даже не пикнул про сарматов с кинжалами. Наоборот, лопотали по пословице: разбили рыло — говорят, так и было.
Помните, кстати, кто был президентом США в то время?
#FIN#война#стратегия#II#b