Когда разрабатываете свой 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
Business owners and facility managers should promote #HandHygiene at all times.
Provide adequate hand hygiene supplies such as running water, soap & hand sanitiser in all shared spaces.
Clean hands save lives
Improving the quality and safety of health care through informed #IPC practices such as #HandHygiene bolsters the feeling of protection by patients & healthcare workers.
Facility managers should ensure #handhygiene at every point of care is promoted at all times.
🧼 Keep Your Hands Clean, Stay Healthy! 👐🏽
Washing your hands at the right moments helps prevent the spread of germs and diseases. Don’t forget to wash your hands:
✅ After coughing/sneezing
✅ After touching high-contact surfaces
✅ Before touching a mask
✅ When entering/leaving public spaces
✅ Upon returning home
✅ While caring for the ill
Clean hands save lives! 🙌🏽#HandHygiene#StaySafe#NCDCNigeria
Every day, our hands come in contact with germs from surfaces, people, and objects around us.
Without proper hygiene, these germs easily enter the body and cause illness.
Washing your hands with soap under clean running water for at least 20 seconds especially before eating, after using the toilet, and after touching shared surfaces is one of the most effective ways to prevent infections.
✅Make handwashing a habit, protect yourself and those around you.
Clean hands today, healthier tomorrow.
#HealthTipMonday#HandHygiene#NCDCNigeria
Clean hands save lives.
Wash your hands regularly with soap under clean running water to protect yourself and others from infections. 🧼👐
#LassaFever#NCDCNigeria#HandHygiene#StaySafe
Preventing #LassaFever starts with simple habits!
Remember: 20 seconds of regular handwashing with soap and water can save lives🧼
Let's keep our hands clean and our loved ones safe.
#STOPLassaFever#HandHygiene
#HandHygiene with clean, running water is very vital to the prevention of #cholera.
Important #handwashing moments⬇️
✅While caring for the ill
✅After using the toilet
✅Before food preparation
✅Before and after eating
✅After touching high contact surfaces
#TakeResponsibility
#HandHygiene with soap under clean, running water is very vital to the prevention of #cholera.
Important #handwashing moments⬇️
✅While caring for the ill
✅After using the toilet
✅Before food preparation
✅Before and after eating
✅After touching high contact surfaces
#TakeResponsibility
#HandHygiene with clean, running water is very vital to the prevention of #cholera.
Important #handwashing moments⬇️
✅While caring for the ill
✅After using the toilet
✅Before food preparation
✅Before and after eating
✅After touching high contact surfaces
#TakeResponsibility
#FactFriday
Clean hands is one of the simplest and most effective ways to stay healthy and protect those around you from diseases👌
Washing your hands with soap under clean running water for just 20 seconds can reduce your risk of infection by up to 50%? 🙌🏽
Make handwashing a daily habit ✅️
#FactFriday#HandHygiene#HealthyLiving#NCDCNigeria
Viral Haemorrhagic Fevers such as #LassaFever spread mainly from person to person through direct & indirect contact.
When properly done, #HandHygiene is very important to reduce the risk of healthcare workers' infection.
Our #IPC guidelines for #VHFs⬇️
https://ncdc.gov.ng/themes/common/docs/protocols/111_1579986179.pdf