Когда разрабатываете свой 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
🇺🇸 Une éruption du volcan Kilauea a commencé à Hawaï. Les fontaines de lave atteignent 350 m de hauteur, a indiqué l’Institut d’études géologiques des États-Unis (USGS).
#étatsunis#volcan#éruption
🇮🇩 Six éruptions du volcan Semeru ont été enregistrées en Indonésie, les cendres ont atteint 4,7 km d'altitude, a rapporté l'agence Antara, citant les données du poste d'observation de l'activité volcanique.
#indonésie#volcan#éruption
🇮🇩 Le volcan Dukono, situé dans l'est de l'Indonésie, est entré en éruption, projetant une colonne de cendres à 1.000 mètres au‑dessus du cratère, a rapporté l’agence de presse Antara, citant les données du poste d’observation.
#indonésie#volcan#éruption
🇮🇩 En Indonésie, le volcan Semeru est entré en éruption, projetant un panache de cendres s'élevant à 6,7 kilomètres au-dessus du niveau de la mer, a rapporté l'agence Antara, citant un poste d'observation local.
#indonésie#volcan#éruption
🇮🇩🌋 Une éruption du volcan Dukono s’est produite en Indonésie. Un panache de cendres s’est élevé à une hauteur de 11,1 kilomètres, ont indiqué les autorités du Centre de volcanologie du pays.
Deux personnes ont trouvé la mort, rapporte le journal Kompas en citant les services de secours. 20 touristes sont recherchés, précise Reuters.
#éruption#volcan#cendres
🇮🇩🌋 En Indonésie, le volcan Marapi a projeté des cendres jusqu’à une hauteur de 4,5 kilomètres lors de son éruption, a indiqué le Centre de volcanologie du pays.
#volcan#cendres#éruption
🇮🇩🌋 Une éruption du volcan Semeru s’est produite en Indonésie. Un panache de cendres s’est élevé à une hauteur de 5,7 km, a rapporté le portail Tempo.
#éruption#volcan#cendres
🇮🇩Une éruption du volcan Semeru a été enregistrée dans la province de Java oriental, dans la partie centrale de l'Indonésie. Les cendres ont été projetées à 4,5 kilomètres au-dessus du niveau de la mer. C'est ce qu'indique un communiqué du Centre de volcanologie et de réduction des catastrophes géologiques (PVMBG) du pays.
#indonésie#semeru#volcan
🇺🇸🌋 Le volcan Kilauea dans l'archipel américain d'Hawaï est à nouveau entré en éruption, a annoncé samedi l'Institut d'études géologiques des États-Unis (USGS).
L'éruption a duré 8,5 heures. Des jets de lave ont atteint une hauteur de 220 mètres.
#hawaï#volcan#éruption
🇵🇭 Aux Philippines, des retombées de cendres volcaniques ont touché 32 localités, a rapporté la chaîne ABS-CBN News, citant l’Institut de volcanologie et de sismologie du pays.
#philippines#volcan#cendres
🇮🇩🌋 Au moins deux éruptions du volcan Dukono se sont produites sur l'île indonésienne de Halmahera (province des Moluques du Nord), rapporte le Centre de volcanologie et de réduction des catastrophes géologiques du pays.
Selon ses informations, une colonne de cendres s'est élevée à 1.300 mètres au-dessus du cratère du volcan et a atteint une hauteur d'environ 2.387 mètres d'altitude.
#éruptions#volcan#cendres