Когда разрабатываете свой 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
#Lassafeverinfo
Our latest Lassa Fever Situation Report has been published on our website (week 23).
This week's situation report and that of previous weeks can be downloaded via https://ncdc.gov.ng/diseases/sitreps/?cat=5&name=An%20update%20of%20Lassa%20fever%20outbreak%20in%20Nigeria
#Lassafeverinfo
Our latest Lassa Fever Situation Report has been published on our website (week 22).
This week's situation report and that of previous weeks can be downloaded via https://ncdc.gov.ng/diseases/sitreps/?cat=5&name=An%20update%20of%20Lassa%20fever%20outbreak%20in%20Nigeria
#Lassafeverinfo
Our latest Lassa Fever Situation Report has been published on our website (week 6).
In this reporting week, a total of 68 confirmed cases were recorded.
This week's situation report and that of previous weeks can be downloaded via https://ncdc.gov.ng/diseases/sitreps/?cat=5&name=An%20update%20of%20Lassa%20fever%20outbreak%20in%20Nigeria
#Lassafeverinfo
Our latest Lassa Fever Situation Report has been published on our website (week 4).
This week's situation report and that of previous weeks can be downloaded via https://ncdc.gov.ng/diseases/sitreps/?cat=5&name=An%20update%20of%20Lassa%20fever%20outbreak%20in%20Nigeria
#Lassafeverinfo
Our latest Lassa Fever Situation Report has been published on our website (week 2).
This week's situation report and that of previous weeks can be downloaded via https://ncdc.gov.ng/diseases/sitreps/?cat=5&name=An%20update%20of%20Lassa%20fever%20outbreak%20in%20Nigeria
#Lassafeverinfo
Our latest Lassa Fever Situation Report has been published on our website (week 49).
This week's situation report and that of previous weeks can be downloaded via https://ncdc.gov.ng/diseases/sitreps/?cat=5&name=An%20update%20of%20Lassa%20fever%20outbreak%20in%20Nigeria
In total for 2024, 1035 confirmed cases of #LassaFever have been recorded across 28 States in Nigeria.
🔗Download, read, and share our latest #LassaFever situation report via:
https://ncdc.gov.ng/diseases/sitreps/?cat=5&name=An%20update%20of%20Lassa%20fever%20outbreak%20in%20Nigeria
#LassaFeverInfo
In total for 2024, 1018 confirmed cases and 172 deaths of #LassaFever have been recorded across 28 States in Nigeria.
🔗Download, read, and share our latest #LassaFever situation report via:
https://ncdc.gov.ng/diseases/sitreps/?cat=5&name=An%20update%20of%20Lassa%20fever%20outbreak%20in%20Nigeria
#LassaFeverInfo
In total for 2024, 1005 confirmed cases of #LassaFever have been recorded across 28 States in Nigeria.
🔗Download, read, and share our latest #LassaFever situation report via:
https://ncdc.gov.ng/diseases/sitreps/?cat=5&name=An%20update%20of%20Lassa%20fever%20outbreak%20in%20Nigeria
#LassaFeverInfo
In this week's #LassaFever situation report, we provide a summary of the epidemiological situation and response activities in Nigeria.
🔗Download, read, and share via
https://ncdc.gov.ng/diseases/sitreps/?cat=5&name=An%20update%20of%20Lassa%20fever%20outbreak%ll20in%20Nigeria
#LassaFeverInfo
In this week's #LassaFever situation report, we provide a summary of the epidemiological situation and response activities in Nigeria.
🔗Download, read, and share via
https://ncdc.gov.ng/diseases/sitreps/?cat=5&name=An%20update%20of%20Lassa%20fever%20outbreak%ll20in%20Nigeria
#LassaFeverInfo
You can not be too safe!
#Lassafever presents with symptoms similar to those of many illnesses like malaria.
Healthcare workers are urged to always have a high index of suspicion and practice standard infection prevention and control measures when attending to patients.
#LassafeverInfo