Когда разрабатываете свой 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
Kalit so'zlar
Kalit so'zlar kompilyator uchun maxsus ma'nolarga ega bo'lgan oldindan belgilangan, zaxiralangan identifikatorlardir. Ular @ prefiksisiz dasturlarda identifikator sifatida ishlatilishi mumkin emas. Masalan, @if haqiqiy identifikator hisoblanadi, lekin if emas chunki bu kalit so'z bo'ladi.
👉Batafsil
👨🏫 Mentor: Abdulaziz Abduxalil-zoda
#csharp#keywords#starter#dotnet
.NET Uzbekistan Community
__________
Telegram | Instagram | Youtube
Operatorlar
Operatorlar odatda harakat yoki jarayonni (harakat va jarayonni ham bo’lishi mumkin) ifodalovchi belgidir. Ular matematika va logikani yaxshi biladigan har qanday inson uchun muammo tug’dirmaydi. Ya’ni ularning asosini aynan shular tashkil qiladi.
👉Batafsil
👨🏫 Mentor: Suxrob Xayitmurodov
#csharp#operators#starter#dotnet
.NET Uzbekistan Community
__________
Telegram | Instagram | Youtube
Ma'lumot turlari
Ma’lumotlar toifasi – bu o’zgaruvchilarning turi va xotiradan qancha joy egallashini belgilab beruvchi kerakli omil. Foydalanilgan o’zgaruvchiga to’g’ri tipni belgilash muhim vazifalardan biridir. Sababi bu orqali biz, yaratayotgan dasturimizda yuzaga keladigan ba’zi bir muammolarni oldini olishimiz, eng asosiysi vaqt tejalishi va dasturning xotiradan kamroq joy egallanishiga erishishimiz mumkin.
👉Batafsil
👨🏫 Mentor: Xondamir Abduxoshimov
#csharp#datatypes#starter#dotnet
.NET Uzbekistan Community
__________
Telegram | Instagram | Youtube
O'zgaruvchilar
Barcha dasturlash tillarida eng ahamiyatli o’rinlardan birida turadigan, hamda ko’pchilikka ilk dasturlashni boshlash chog’larida muammo bo’lishga ulgurgan, ushbu mavzu to’g’risida yaqin daqiqalar ichida tushunmovchiliklarga barham beramiz.
👉Batafsil
👨🏫 Mentor: Xondamir Abduxoshimov
#csharp#variables#starter#dotnet
.NET Uzbekistan Community
__________
Telegram | Instagram | Youtube
For operatori
Umuman olganda kod yozayotganingizda bir xil hisoblash jarayonini qayta-qayta yozish qimmatli vaqtingizni o'g'irlab sizni bezor qilishi mumkin, masalan siz “Salom, Dunyo!” jumlasini 100 marta yozishingiz zarur bo’lib qoldi.Siz uni qayta qayta yozib chiqgan bo’larmidingiz, yo’q albatta.
👉Batafsil
👨🏫 Mentor: Suxrob Xayitmurodov
#csharp#for#loop#starter
.NET Uzbekistan Community
__________
Telegram | Instagram | Youtube
Switch operatori
Tanlash operatori bizga bir nechta qiymatlardan, o’zgaruvchilarga to’g’ri keluvchi qiymatni tanlashda va uni ishga tushirishda ishlatiladi. Misol uchun, hafta kunlarini raqamidan topish topshiriq sifatida berildi. Ularni bemalol topishimiz mumkin, lekin kompyuterga uni qanday tushuntiramiz?
👉Batafsil
👨🏫 Mentor: Suxrob Xayitmurodov
#csharp#switch#choice#starter
.NET Uzbekistan Community
__________
Telegram | Instagram | Youtube
IF-ELSE
C# dasturlash tilida if-else lar bilan tanishamiz (Men tanishman siz tanishasiz) Biz hayotda juda ko’p if va else ni ishlatganmiz. “IF” so’zi o’zbek tiliga “Agar” deb tarjima qilinadi. Keling avval ifni o’zini o’rganib olaylik : Misol: “Agar bir qop pulim bo’lsa, albatta ularni hammasini yoqib yuborgan bo’lar edim”.
👉Batafsil
👨🏫 Mentor: Sobirjonov O'tkirbek
#csharp#if#else#conditions#starter#dotnet
.NET Uzbekistan Community
__________
Telegram | Instagram | Youtube