Когда разрабатываете свой 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
Lookonchain | ꘜ
Whales keep accumulating $ETH!
Whale 0x3952 withdrew another 21,000 $ETH($90.6M) from #Binance in the past 40 minutes and currently holds 86,001 $ETH ($260M).
https://intel.arkm.com/explorer/address/0x3952D69643F7a87237C7fC8bB33f8453C0b45500
Lookonchain | ꘜ
Whale bc1q5r withdrew another 500 $BTC($59.53M) from #Binance 5 hours ago.
This whale has withdrawn 3,000 $BTC($355M) from #Binance over the past 3 months at an average price of $109,895.
https://intel.arkm.com/explorer/address/bc1q5rsc4uscnmemlwru8xsys26k3xgxewqfnf3k7j
Lookonchain | ꘜ
Three wallets (likely belonging to the same whale) unstaked 14,942 $ETH($64.38M) and deposited it into #Binance in the past hour.
https://intel.arkm.com/explorer/address/0x345834DA38A13Ba5B9F4dDD2288e0B98C662Fb95
https://intel.arkm.com/explorer/address/0xA55d99EEcc7d1D5D76829e71CdC9fdB387858CE5
https://intel.arkm.com/explorer/address/0xF2758d2d606ecE036601544606BE2Af61F6a12e1
Lookonchain | ꘜ
A wallet linked to Metalpha deposited 5,000 $ETH($20.91M) to #Binance just now.
https://intel.arkm.com/explorer/address/0x96F49d0e9724dFD8780fa667ac37A993f005CB94
Lookonchain | ꘜ
Whale 0x3952 withdrew another 8,745 $ETH($37.6M) from #Binance an hour ago.
Over the past two months, this whale has withdrawn 65,001 $ETH($281M) from #Binance at an average price of 2,611 — now sitting on over $111M in unrealized profits.
https://intel.arkm.com/explorer/address/0x3952D69643F7a87237C7fC8bB33f8453C0b45500
A whale deposited 689.34 $BTC worth $46.17M into #Binance.
https://intel.arkm.com/explorer/address/15HWQZaDQ6GFhro8x693zaqCdTU1qVKvdQ
https://x.com/OnchainLens/status/2039991271012679903
Follow @onchainlens for more onchain updates
Whale 0x2fcf withdrew 5,090 $BNB ($6.65M) from #Binance and spent 3,475 $BNB ($4.54M) aping into random memecoins.
He’s now sitting on an unrealized loss of ~$1.2M.
Even whales get rekt. 🐋