Когда разрабатываете свой 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
✅#Rasman
🇵🇹 Krishtianu Ronaldu – birinchi milliarder futbolchiga aylandi.
💸 Portugaliyalikning umumiy boyligi "Al Nassr" bilan shartnoma tufayli 1,4 milliard yevroga yetdi.
👉@Jizzaxlik kanali har kungi yangiliklar!
#Rasman
“O‘zmetkombinat” ayol ishchi-xodimlariga bayram puli berildi
8-mart – Xalqaro xotin-qizlar kuni munosabati bilan “O‘zmetkombinat” AJda faoliyat yuritayotgan har bir xotin-qizga 1 150 000 (bir million bir yuz ellik ming) so‘m miqdorida bir martalik pul mukofoti berildi. Mazkur buyruq Boshqaruv raisi – Bosh direktor Bahodir Abdullayev tomonidan tasdiqlandi.
Zero, korxonada faoliyat yuritayotgan har bir xotin-qiz doimo e’tibor markazida. Kombinat rivojida ularning har biri munosib hissa qo‘shib kelmoqda.
uzbeksteel.uzlFacebook l Instagram l TwitterlTelegram l You Tube
✅#Rasman. 🇺🇿 O‘zbekiston milliy terma jamoasi bosh murabbiyi Fabio Kannavaro mart oyidagi yigʻinga jalb etilgan futbolchilar ro‘yxatini e’lon qildi.
Bu yig'in davomida Milliy jamoamiz yurtimizda boʻlib oʻtadigan FIFA Series xalqaro oʻrtoqlik turnirida qatnashadi.
O’rtoqlik uchrashuvlarida — O‘zbekiston, Trinidad va Tobago, Gabon va Venezuela terma jamoalari ishtirok etadi.
🚑#Rasman
"Real Madrid" Ferlan Mendi jarohat olganini ma'lum qildi. Agar u operatsiya qilinadigan bo'lsa, 5 oyni o'tkazib yuboradi.
Shu o'rinda ma'lumot, futbolchi "Real"ga kelganidan beri 393 ta o'yinning 170 tasini jarohatlar sabab o'tkazib yuborgan.
📲 "Real Madrid" katta kanalining manzili: https://t.me/+tPEIyHw1uU41NmQy
🚑#Rasman. Arda Guler va Eder Militao jarohat olishdi va mavsumning qolgan qismini o'tkazib yuborishadi.
📲 "Real Madrid" katta kanalining manzili: https://t.me/+tPEIyHw1uU41NmQy
🚑#Rasman. Alvaro Karreras jarohat olib, safdan chiqdi. U "Man Siti"ga qarshi o'yinni o'tkazib yuboradi.
📲 "Real Madrid" katta kanalining manzili: https://t.me/+tPEIyHw1uU41NmQy
🚑#Rasman. Alaba va Rodrigo jarohat olishdi va keyingi o'yinni o'tkazib yuborishadi.
📲 "Real Madrid" katta kanalining manzili: https://t.me/+tPEIyHw1uU41NmQy