Когда разрабатываете свой 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
Пилоты подрались в кабине во время рейса. Один даже швырнул в напарника портфелем
Два пилота A320 авиакомпании Air France подрались в кабине вскоре после вылета из Женевы в Париж ✈️
Как пишет газета La Tribune, ссора возникла из-за того, второй пилот отказался выполнить команду КВС, тот дал ему пощёчину, второй пилот швырнул в командира портфелем, далее завязалась потасовка; разнимать пилотов пришлось бортпроводникам, которые услышали шум.
Правда, тут французские журналисты, очевидно, подвирают, поскольку бортпроводник не может самостоятельно открыть дверь в кабину пилотов – её могут открыть только сами пилоты, поэтому очевидно, что они к тому времени уже прекратили драться. Однако после этого один из бортпроводников остался в кабине в кресле инструктора, чтобы конфликт не разгорелся вновь.
Авиакомпания заявила, что инцидент не повлиял на безопасность полёта, однако оба пилота были отстранены от полётов и находятся под следствием.
Лёгкое небо
#aviation#news#ГА#AirFrance
🇶🇦Европейские авиакомпании требуют аннулировать авиасоглашение с Катаром
📌Lufthansa, Air France, KLM и SAS обратились к главе Еврокомиссии с требованием аннулировать авиасоглашение ЕС с Катаром, подписанное в октябре 2021 года
🔵Поводом стало увольнение высокопоставленного чиновника ЕС, обвинённого в коррупции – в том числе в получении бесплатных перелётов Qatar Airways для себя и семьи
🔵По мнению европейских перевозчиков, соглашение предоставляет катарским авиакомпаниям неограниченный доступ к рынку ЕС и создаёт недобросовестную конкуренцию. Заявители настаивают, что документ не может действовать, пока остаются подозрения в коррупции при его заключении
🔵Власти Катара опровергли обвинения, заявив о полном соответствии законам. Qatar Airways ситуацию пока не прокомментировала
🤩Лёгкое небо
#aviation#news#Qatar#Lufthansa#AirFrance
#Updates: #Lufthansa, #TurkishAirlines, #AirFrance cancel Saturday flights to and from Tel Aviv, Middle East capitals
The German airline group Lufthansa said in a statement that it and its subsidiaries were suspending flights to and from #Dubai and #Abu_Dhabi until Sunday, citing the “current situation in the Middle East.”
Air France also cancelled its Saturday flights to and from #Tel_Aviv and #Beirut after the United States and Israel launched strikes on Iran, adding that it would provide further updates on its schedule in the coming days.
“Due to the security situation at the destination, the airline has decided to cancel its flights scheduled for February 28 to/from Tel Aviv and to/from Beirut,” Air France told AFP. “Air France will communicate later on its flight schedule to these destinations for the coming days,” it added.
#Iran, #Iraq, and #Israel have closed their airspace....
https://web.facebook.com/AddisstandardEng/posts/pfbid0EDj1My2WPSW3gr88dM7ioLeeMBhKoSBY7D9anWKrrFGsHXAxBFLG5w1seq733Qk1l