Когда разрабатываете свой 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
Day One #Token2049
Our CEO Star_OKX takes the stage at TOKEN2049
The new money era is here:
✅ Everything onchain
✅ Self-custody first
✅ Verify before trust
OKX is building this future - one wallet, one transaction at a time.
Our Socials:
⚜️TG | DC | Wallet TG | Wallet Announcement | OKX on Spotify | Twitter/X | YouTube
‼️Please check the authenticity of all OKX links or channels at OKX channel verification
Singapore, lights on. #Token2049
Yesterday, Star_OKX takes the big stage and Haider brings us the fireside chat.
Stay locked, fam 👀
Our Socials:
⚜️TG | DC | Wallet TG | Wallet Announcement | OKX on Spotify | Twitter/X | YouTube
‼️Please check the authenticity of all OKX links or channels at OKX channel verification
Our CEO
Star_OKX
takes the stage at #TOKEN2049
The new money era is here:
✅ Everything onchain
✅ Self-custody first
✅ Verify before trust
OKX is building this future - one wallet, one transaction at a time.
Still day one.
Check out now👈
Our Socials:
⚜️TG | DC | Wallet TG | Wallet Announcement | OKX on Spotify | Twitter/X | YouTube
‼️Please check the authenticity of all OKX links or channels at OKX channel verification
The BNB Chain Incubation Alliance, Singapore agenda is here 🤩
Join us at #Token2049: https://lu.ma/m91xxlbk
This event is sponsored by $WHY, Lorenzo Protocol, D11 Labs, Seraph, Xterio, Solv & Particle Network
Join us at #Token2049 as we continue our mission to onboarding the next billion Web3 users at BNB Incubation Alliance, Singapore 🇸🇬.
Be part of the movement via the link below 👇
https://lu.ma/m91xxlbk
💖 We're thrilled to announce that we'll be part of the exclusive #TOKEN2049 side event, 'DeFi 2049 – Beyond THE Horizon', co-hosted by our partner DEX, THENA, & DeThings! 🎙️
Join us alongside BNB chain, Simon's Cat, Orbs network, Lista, and many more projects!
🧵 Learn more: lu.ma/h9w9yxww
🚀#TOKEN2049 Dubai wrapped up a few impactful days of ecosystem insights and momentum.
VCs remain selective, but capital is shifting towards liquid opportunities, AI infrastructure, and RWAs.
Sui Foundation saw strong engagement from builders and investors, Sonic Labs is gaining traction, Falcon Finance marked its public launch, and there’s much more to unpack 🙌🏼
Read the full recap for detailed insights — and find out where to meet us next!
Guess where we are 🐤✨️
It's been a busy #token2049 and we are not stopping!
Up next, we are at Algorand Royale where our Business Partner of Ecosystems, Alessia Baumgartner, will be sharing on a panel "How to survive and thrive as a Web3 company" 🙌🔥
Join us here 🤩
Excited to be one of the co-hosts and partners of this reception happening alongside #Token2049 in 🇸🇬!
Let's get connected and build together 🫡⚡
Date: 17th September, 2024
Time: 6PM - 10PM
Don't wait, register here🔗
KBW has been a blast 🐥✨️
It's been an amazing night hosting all of our guests at DWF Labs Haus 🎉
We hope you enjoyed your time with us and we'll see you again at our next event 🫡🔥
Next stop 🇸🇬 here we come! #TOKEN2049