Когда разрабатываете свой 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
🚗✨Rare Gem Alert: 1935 Mercedes-Benz 500K!✨🚗
A stunning piece of automotive history is hitting the auction block for $4-6 million! 💰🔥
This exquisite Mercedes-Benz 500K was built for the legendary pre-war racer Rudolf "Regensmeister" Caracciola. 🏁🏆 Its unique body was custom-designed to accommodate the tall stature of the champion driver!
In 1979, the car found its way to Rudi Klein, who took it for a couple of events before locking it away in his barn, preserving its beauty for decades. 🏡🔒
#MercedesBenz500K#ClassicCars#CarAuction#RacingLegend#Auto
🚗✨ Rare Mercedes-Benz S-Class Coupe Up for Auction! ✨🚗
Check out this stunning 1980s Mercedes-Benz 500SEC, expertly tuned by AMG before it became part of the larger automotive group! 🏎️💨
🔧 Specs:
- Original 5.0L V8 upgraded to a powerful 6.0L! 🔥
- Output increased to an impressive 330 HP! 💪
- Features include AMG springs, four-piston brake calipers, and stunning 17-inch OZ Racing wheels. 🛞
- Aerodynamic body kit for that sleek look! 🌬️
Don’t miss your chance to own a piece of automotive history! 🏆
#MercedesBenz#AMG#ClassicCars#CarAuction#SClass#Auto
🚗✨ Rare Pre-War Delahaye 135M Roadster Up for Sale! ✨🚗
This stunning automobile, crafted by the renowned Figoni et Falaschi atelier, is one of only 11 ever made in 1938, with fewer than five surviving to this day! 🌟
Originally ordered by an Algerian businessman in March 1938, its journey remains a mystery until the early 1990s when it was rediscovered in a garage by a French enthusiast. 🕵️♂️🔍
Since 1999, this exquisite piece of French automotive history has been owned by renowned American collector Robert Petersen and is periodically showcased in his museum. 🎨🏛️
Now, it's hitting the auction block with a price tag of $3 million! 💰💎
#Delahaye#ClassicCars#CarAuction#VintageAutomobile#FigoniEtFalaschi#LuxuryCars#CarCollector#AutomotiveHistory#RareFinds
🚗✨ Incredible Auction Alert! ✨🚗
Get ready for the chance to own a piece of racing history! 🏁 The legendary Mercedes-Benz W196 Streamliner is set to hit the auction block! 🎉
This extraordinary car, originally driven by the great Juan Manuel Fangio in a non-championship Formula 1 race in 1954, features the iconic streamlined body that has been preserved to this day. 🏆💨
Later, the car was driven by Stirling Moss during the 1955 Italian Grand Prix at Monza, where he recorded an impressive lap time before sadly retiring from the race. ⏱️🇮🇹
Auction estimates place this racing masterpiece at a staggering $50 to $70 million (approx. **₽4.7 to ₽6.3 billion**)! 💰💎
#MercedesBenz#W196#Streamliner#F1History#JuanManuelFangio#StirlingMoss#CarAuction#RacingLegend#LuxuryCars#Auto
🚗✨For Sale: A Rare Jaguar Duo!✨🚗
Up for auction on Pistonheads, we present a unique lot featuring two legendary Jaguars: the racing beast XJR-15 and the classic coupe XJR-S! 🏁
🌟Jaguar XJR-15🌟
- The world’s first production car with a carbon fiber body! 🏆
- Only 53 units produced from 1990 to 1992, all equipped with a powerful 6.0L V12 engine (450 hp). 🔥
- Out of those, only 27 are road-legal! This one is a pure track version with chassis number 48. 🏎️💨
- Notably, it won a support race for Formula 1 at Silverstone in 1991, driven by the legendary Juan Manuel Fangio II, with his autograph still gracing the body! ✍️🏅
#Jaguar#XJR15#XJRS#ClassicCars#CarAuction#Pistonheads#Motorsport#CarCollectors#RareCars#Auto🚘💖