Когда разрабатываете свой 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
【#本站公告#General #Spring Festival Activities】
🧧The 2023 mushroom cloud Chinese New Year event has started!🧧
==================================
🐰The Year of the Rabbit uses mushroom cloud to let you "🐰Rabbit Fly Forward 🐰Rabbit to Run" all the way 💰
==================================
🌟This limited-edition special product, annual payment special discount 366CNY, let you go smoothly 💰💰💰
Limited to 10, sold out will not make up~
Preferential Specifications:
Time: 365 days
Level: big mushroom
Traffic: 888G (can be reset every 45 days)
Broadband: Peak 888Mbps
==================================
🌟All station product discount code:
Monthly payment: 15% off 2023-CNY-MON
Quarterly payment: 2023-CNY-SEA 25% off
Annual payment: 2023-CNY-YEA 35% discountG
================================
‼️ Notes for this Spring Festival event
1. All discounts are limited to new purchases (old packages cannot be used)
2. None of the refunds are supported
3. In case of exploiting loopholes or violating TOS (including behaviors suspected of loopholes), we have the right to refuse to provide you with services, or even ban your account. This site reserves the highest right of interpretation.
Event schedule: 2022/01/17 22:00-2023/02/01 00:00
==================================
Latest official website: https://1mgy.com
Contact customer support: https://t.me/mushroom_cloud_bot
--------------------------------------------------------------------
🧧2023 mushroom cloud 春節活動開跑囉!🧧
================================
🐰兔年使用 mushroom cloud 讓您 “🐰兔飛猛進 🐰兔來運轉” 一路發發發💰
================================
🌟本檔限量特惠产品,年缴 特惠366CNY,让您一顺顺利利💰💰💰
限量10,售完不補~
特惠規格:
时间:365day
等级: 大蘑菇
流量: 888G (每45天可人工重置一次)
宽带: 峰值888Mbps
================================
🌟全站產品優惠碼:
月繳: 2023-CNY-MON 8.5折
季繳: 2023-CNY-SEA 7.5折
年繳: 2023-CNY-YEA 6.5折
================================
‼️本檔春节活动注意事项
1. 所有優惠限新購(舊套餐無法使用)
2. 均不支持退款
3. 如有出現鑽漏洞或者違反TOS嘅行為(包含疑似漏洞嘅行為),我哋有權拒絕為您提供服務,甚至封禁賬號,本站保留最高解釋權。
活動檔期: 2022/01/17 22:00-2023/02/01 00:00
================================
最新官網: https://1mgy.com
聯繫客服: https://t.me/mushroom_cloud_bot
POCO M7 Plus, POCO M8s, REDMI 15 - China - OS3.0.302.0.WOUCNXM (Android 16)
📆2026/05/06 #release📱#spring
📥Recovery ROM
📝Changelog:
[System]
Updated the security patch to August 2025. Increased system security.
🔗@xiaomiui | @miui_download | @hyperosfirmware | MemeOS Updates | XimiTime