Когда разрабатываете свой 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
📱📱 Ultimate foto flagman: Vivo X300 Ultra taqdim etildi
📷 Asosiy kamera sensori yanada kattalashtirildi. Periskop kamera ham yangi sensor oldi, ammo uning xususiyatlari deyarli avvalgisiga o‘xshash. Keng burchakli kamera esa o‘zgarishsiz qolgan.
⚙️ Lekin gap faqat kamerada emas — boshqa texnik jihatlari ham yuqori darajada: Snapdragon 8 Elite Gen 5, 144 Hz displey va 12 dan 16 GB gacha operativ xotira. Akkumulyator sig‘imi oshirilgan bo‘lsa-da, hozirgi standartlar bo‘yicha rekord darajada emas — 6600 mAh.
ℹ️ Smartfonning asosiy “fishi” — boy foto to‘plam: 200 va 400 mm fokus masofali olinadigan obyektivlar (alohida ham sotib olish mumkin), ergonomik tutqichli g‘ilof, foto filtrlari uchun mahkamlagichlar, tashish uchun sumka va yelka kamar.
✔️ Shuningdek, bu Vivo kompaniyasining global bozorga chiqadigan birinchi Ultra flagmani hisoblanadi. Global versiya premyerasi yil oxiriga rejalashtirilgan.
Texnik xususiyatlari:
* Displey: 6.82" 3168×1440 LTPO AMOLED, 1–144 Hz
* Chipset: Snapdragon 8 Elite Gen 5
* Kameralar:
• 200 MP (Sony LYTIA-901, f/1.85, 35 mm)
• 50 MP keng burchak (116°, Sony LYT-818, f/2.0, 14 mm)
• 200 MP periskop (3.7x, Samsung HP0, f/2.67, 85 mm)
* Xotira: 12+256, 16+512, 16+1024 GB
* Aloqa: 5G, NFC, Wi-Fi 7, Bluetooth 5.4
* Biometriya: ekranda ultratovushli barmoq izi skaneri, yuzni aniqlash
* Himoya: IP68/69
* Batareya va zaryad: 6600 mAh, 100 W, 40 W simsiz
* Narxi: 6999 yuandan (taxminan ~$950).
➡️#vivo | Birinchi IT-Blog
📱📱 X Fold 5 dunyodagi eng yengil bukiluvchi smartfon bo‘ladi
ℹ️ Kompaniya chiqarilgan video orqali yangi model — X Fold 5 — avvalgi X Fold 3 modelidan ham yengilroq bo‘lishini tasdiqladi. Mish-mishlarga ko‘ra, uning og‘irligi atigi 209 gramm bo‘ladi.
💧Vivo shuningdek, bu model uch darajali himoyaga ega bo‘lgan dunyodagi birinchi bukiluvchi telefon bo‘lishini aytdi — IP66, IP68, IP69 sertifikatlari bilan.
⚙️ Ma’lum xususiyatlari:
- Ichki ekran: 8,03" AMOLED, 2K, 120 Hz
- Tashqi ekran: 6,53" OLED, FHD+, 120 Hz
- Chipset: Snapdragon 8 Gen 3
- Kameralar: 50 MP asosiy + 50 MP ultra keng + 50 MP telefoto + 32 MP selfi
- Himoya: IP66 / IP68 / IP69
- Batareya: 6000 mA·soat, 90 W tezkor, 30 W simsiz zaryadlash
➡️#vivo | Birinchi raqamli IT-Blog
📱📱 X Fold 5 Apple Watch va AirPods bilan ishlay oladigandunyodagi birinchi Android-smartfon!
ℹ️ Kompaniya rasmiy bayonotlariga ko‘ra, soatlar smartfonga kelayotgan barcha bildirishnomalarni ko‘rsata oladi, shuningdek, vivo Health ilovasidan ma’lumotlarni qabul qiladi.
☁️ Ulashish iCloud hisob qaydi orqali amalga oshiriladi. iCloud Drive, fotosuratlarni sinxronlash va boshqa barcha funksiyalarni qo‘llab-quvvatlashi e’lon qilingan.
🍏 Ammo bu hammasi emas — qandaydir tarzda Vivo X Fold 5’ni AirPods bilan ham moslashtira olgan: u fazoviy audio, chiroyli ulanish oynasi va iPhone’dan qo‘ng‘iroqlarni qabul qilish, Mac uchun tashqi displey sifatida ishlash funksiyalariga ega.
🤷♂️ Taxminlarga ko‘ra, kompaniya bu moslikni Apple’ning rasmiy API’larsiz, cheklovlarni qisman chetlab o‘tish orqali amalga oshirgan. Ammo ehtimol, Apple kelgusidagi yangilanishlar orqali bu “moslikni” bloklashi mumkin.
➡️#vivo#apple | Birinchi raqamli IT-Blog