Установить свойства виджета в PySide можно не только через соответствующие методы и конструктор класса. Можно их изменять с помощью метода setProperty по имени.
btn = QPushButton("Click Me")
btn.setProperty("flat", True)
Это аналогично вызову
btn.setFlat(True)
Если указать несуществующее свойство, то оно просто создается
btn.setProperty("btnType", "super")
Получить его значение можно методом .property(name)
btn_type = btn.property("btnType")
Когда это может быть полезно?
▫️Можно просто хранить какие то данные в виджете и потом их доставать обратно
widget = QWidget()
widget.setProperty('my_data', 123)
print(widget.property('my_data'))
▫️ Назначая эти свойства разным виджетам можно потом отличить виджеты во время итераци по ним. Например, найти все кнопки со свойством my_data="superbtn".
Но ведь вместо кастомного свойства можно использовать objectName, будет тот же результат.
Да, но y ObjectName есть ограничение - только строки.
▫️ Если нам потребуется не просто поиск а, например, сортировка по числу, то свойства позволяют нам это сделать. Поддерживается любой тип данных
widget.setProperty('my_data', {'Key': 'value'})
widget.setProperty('order', 1)
all_widgets.sort(key=w: w.property('order'))
Но ведь Python позволяет всё вышеперечисленное сделать простым созданием атрибута у объекта
widget.order = 1
widget.my_data = 123
Да, но я думаю что не надо объяснять почему не стоит так делать. К тому же, если у виджета нет свойства то метод .property(name) вернет None, а отсутствующий атрибут выбросит исключение.
▫️ Действительно полезное применение кастомным свойствам - контроль стилей. Здесь атрибутами не обойтись, нужны именно свойства.
Дело в том, что в селекторах стилей можно указывать конкретные свойства виджетов на которые следует назначать стиль.
Просто запустите этот код
from PySide2.QtWidgets import *
if __name__ == "__main__":
app = QApplication([])
widget = QWidget(minimumWidth=300)
layout = QVBoxLayout(widget)
btn1 = QPushButton("Action 1")
btn2 = QPushButton("Action 2")
btn3 = QPushButton("Action 3", flat=True)
layout.addWidget(btn1)
layout.addWidget(btn2)
layout.addWidget(btn3)
# добавим кастомное свойство одной кнопке
btn1.setProperty("btnType", "super")
# добавляем стили
widget.setStyleSheet(
"""
QPushButton[btnType="super"] {
background-color: yellow;
color: red;
}
QPushButton[flat="true"] {
color: yellow;
}
"""
)
widget.show()
app.exec_()
С помощью селектора мы избирательно назначили стили на конкретные кнопки.
Как получить список всех кастомный свойств?
Функция получения списка кастомных свойств отличается от получения дефолтных.
def print_widget_dyn_properties(widget):
for prop_name in widget.dynamicPropertyNames():
property_name = prop_name.data().decode()
property_value = widget.property(property_name)
print(f"{property_name}: {property_value}")
#tricks#qt
🔝Oktyabr oyida BYD NEW ENERGY 301 833 ta, shu jumladan 301 095 ta yengil avtomobillarni sotdi. ➡️ Bu o‘tgan yilning shu davriga nisbatan 38,4 %ga ko‘proq.
‼️ 1-noyabr holatiga ko‘ra, 2023-yilda BYD NEW ENERGY avtomobillarining umumiy savdosi 5,7 million donadan oshdi.
♻️ Ekologik kelajak sari sayohatga qo'shiling!
________
🔝В октябре было продано 301 833 автомобилей BYD NEW ENERGY, включая 301 095 легковых автомобилей.
➡️ Это на 38,4% больше по сравнению с аналогичным периодом прошлого года.
‼️ По состоянию на 1 ноября, совокупные продажи автомобилей BYD NEW ENERGY в 2023 году превысили 5,7 миллионов единиц.
♻️ Присоединяйтесь к путешествию к более экологичному будущему!
#BydUzbekistan#Auto#Bydauto
Сегодня День профсоюза!
Мы бы хотели выразить нашу благодарность и уважение всем работникам – за ваш труд, усердие и неустанные усилия по содействию социальному развитию и прогрессу. Давайте работать вместе, чтобы создавать лучшее будущее! #BydUz#Bydauto#BydUzbekistan#Auto#Bydauto
Bugun Kasaba uyushmalari kuni!
Mashaqqatli ishingiz, mehnatsevarligingiz va ijtimoiy taraqqiyot yo'lidagi tinimsiz sa'y-harakatlaringiz uchun barcha xodimlarga o'z minnatdorchiligimiz va hurmatimizni bildiramiz. Porloq kelajakni yaratish uchun birgalikda harakat qilaylik! #BydUz#Bydauto#BydUzbekistan#Auto#Bydauto
BYD DiPilot boshqarishga ko'maklashish tizimi ADAS imkoniyatlarini birlashtirish orqali avtomobil boshqarishni soddalashtiradi.
ADAS (Advanced Driver Assistance System) – bu haydovchiga avtomobilni oson, qulay va xavfsiz boshqarishga yordam beruvchi funksiyalar va elementlar to‘plami.
Misol uchun, tizim boshqa transport vositalariga yaqinlashish tezligini va avtomobil orqasidagi vaziyatni nazorat qilish imkonini beradi yoki ko'rinmas zonalarda obyektlar mavjudligi haqida xabar beradi, bu esa baxtsiz hodisalarning oldini olishga va haydovchi xavfsizligini yaxshilashga yordam beradi.
_
Интеллектуальная система помощи при вождении BYD DiPilot упрощает вождение за счет интеграции функций ADAS.
ADAS (Advanced Driver Assistance System) – это целый набор функций и элементов, которые помогают водителю легко, комфортно и безопасно управлять автомобилем.
Например, система позволяет контролировать скорость сближения с другими транспортными средствами и ситуацию позади автомобиля или сообщает об имеющихся объектах в слепой зоне, что позволяет избежать аварий и повысить безопасность водителя за рулем.
#byduz#BuildYourDreams#bydauto#byduzbekistan#auto
Revolyutsion BYD Blade Battery akkumulyatorlari — elektromobillar sanoati xavfsizligining yangi darajasi.
Nima uchun?
Blade Battery o'z sinfidagi eng yaxshi sinov natijalarini ko'rsatgan.
Jiddiy sinovlar Blade Battery tashqi harorati tutun yoki olov chiqarmasdan 30-60 °C gacha bo'lgan juda past haroratga yetganini tasdiqladi.
Blade Battery 300 °C pechda sinovdan o'tkazildi va 260% qayta zaryadlash sinovidan o'tkazildi, ularning hech biri yong'in yoki portlashga olib kelmadi.
Xavfsizlik bilan bog'liq afzalliklaridan tashqari, BYD Blade Battery sezilarli chiqish ko'rsatkichlarini ta'minlaydi.
Blade Battery'ning chidamliligi 3000 ta zaryadlash siklidan keyin 1,2 million km'ga yetadi.
BYD avtomobillarini tanlash orqali innovatsiyalarni tanlaysiz.
__
Революционный аккумулятор BYD, Blade Battery — это новый уровень безопасности индустрии электромобилей.
Почему?
Blade Battery показала лучшие в своем классе результаты испытаний.
Строгий тест подтвердил, что температура поверхности батареи Blade Battery достигла чрезвычайно низкого уровня температуры 30–60 °C, при этом не выделялось ни дыма, ни огня.
Далее Blade Battery подвергалась испытанию в печи при температуре 300 °C и испытанию на перезарядку на 260%, ни одно из которых не привело к воспламенению или взрыву.
Помимо явных преимуществ безопасности, BYD Blade Battery также обеспечивает значительную выходную производительность.
Долговечность Blade Battery достигает отметки в 1,2 миллиона км после 3000 циклов зарядки/разрядки.
Выбирая BYD, вы выбираете инновации.
#byduz#BuildYourDreams#bydauto#byduzbekistan#auto#bydauto#bydtashkent
"Innovatsiya" so'zini eshitganingizda ko'z oldingizga nima keladi?
Bizning tasavvurimizda faqatgina BYD HAN paydo bo'ladi.
Biznes-klassga oid avtomobil. Nufuzli iF Design Award mukofotining sovrindori.
Yaqin kunlarda BYD HAN avtomobilini O'zbekistondagi rasmiy distribyutordan xarid qilishingiz mumkin.
⠀
Eng so'nggi yangiliklardan birinchi bo'lib xabardor bo'lish uchun bizga qo'shiling.
_
Что вы представляете, когда говорят о слове «Инновации»?
В нашем воображении сразу же возникает BYD HAN.
Автомобиль бизнес-класса. Лауреат престижной премии iF Design Award.
⠀
BYD HAN от официального дистрибьютора скоро в Узбекистане.
⠀
Присоединяйтесь к нам, чтобы узнавать актуальные новости первыми.
⠀
#byduz#BuildYourDreams#bydauto#byduzbekistan#auto#bydauto#bydtashkent
Joriy yilning mart oyi holatiga ko'ra, BYD kompaniyasi 3,7 million yangi energiya manbaalarida harakatlanuvchi avtomobillarni sotishga muvaffaq bo'ldi. BYD olti qit'adagi 70 mamlakat va mintaqadagi 400 dan ortiq shaharlarni qamrab olgan.
_
По состоянию на март текущего года, компания BYD продала 3,7 миллионов автомобилей, работающих на новых источниках энергии. BYD охватывает более 400 городов в 70 странах и регионах на шести континентах.
⠀
#BuildYourDreams#bydauto#byduzbekistan#auto#bydauto#bydtashkent#bydglobal
BYD Dragon Face dizayn konsepsiyasini takomillashtirishda davom etmoqda.
⠀
Song Plus DM-i old qismi Dragon's Mouth uslubidagi panjara o’rnatilgan bo'lib, bu avtomobilga yanada ulug'vor ko'rinish baxsh etadi.
⠀
BYD kompaniyasining O‘zbekistondagi rasmiy dilerlaridan so‘rang.
_
⠀
BYD продолжает совершенствовать концепт дизайна Dragon Face.
⠀
Передняя часть Song Plus DM-i украшена решеткой радиатора в стиле «Пасть дракона», что придает автомобилю еще больше величия.
Спрашивайте у официальных дилеров BYD в Узбекистане.
⠀
#bydauto#byduzbekistan#auto#bydauto#bydtashkent#bydsongdmi#bydsong
Samaradorlik va energiya tejashni hisobga olgan holda, Song Plus DM-i avtomobili Xiaoyun gibrid dvigateli bazasida ishlab chiqarilgan.
⠀
1,5L / 1,5 Ti maxsus yuqori samarali dvigatel + EHS yuqori samarali elektr gibrid tizimi qisqa masofalarda energiya tejashni ta'minlaydi. Uzoq safarlarni rejalashtirayotgan bo'lsangiz, benzinga o'tishingiz mumkin.
⠀
Qiziqarli sayohatdan rohatlaning.
___
⠀
Принимая во внимание производительность и энергосбережение, Song Plus DM-i построен на базе гибридного двигателя Xiaoyun.
⠀
Это специальный высокоэффективный двигатель объемом 1,5 л / 1,5 Ti + высокоэффективная электрическая гибридная система EHS, которая обеспечивает экономию электроэнергии на коротких дистанциях. Либо переключайтесь на бензин, если планируете дальние поездки.
⠀
Наслаждайтесь захватывающим путешествием.
⠀
#bydauto#byduzbekistan#auto#bydauto#bydtashkent#bydsongdmi#bydsong
BYD CHAZOR avtomobilining dinamikasi va tezkorligini his eting.
Uchrashuvga bir kundan ozroq vaqt qoldi…
____
Испытайте на себе динамику и стремительность BYD CHAZOR.
До встречи осталось меньше суток…
#byduz#BuildYourDreams#bydauto#byduzbekistan#auto#bydauto#bydtashkent#newenergy
HAN interyeri xalqaro darajadagi mutaxassis, BYD global interyer dizayni bo'yicha direktori Mikelanjelo Paganetti tomonidan ishlab chiqilgani, u avval Mercedes-Benz kompaniyasida dizayn bo'yicha menejer sifatida faoliyat olib borgan.
Interyer uchun tabiiy charm, tabiiy yog'och, uglerod tolasi, alyuminiy kabi nafis materiallardan foydalanilgan — HAN salonida S-sinfinga oid avtomobilning hashamatini his eting!
Avtomobilni BYD kompaniyasining Toshkentdagi barcha rasmiy dilerlik markazlaridan xarid qiling.
___
Интерьер HAN разработан международным мастером Микеланджело Паганетти, директором по глобальному дизайну интерьера в BYD, который ранее был менеджером по дизайну Mercedes-Benz.
Материалы интерьера изысканы — натуральная кожа, натуральное дерево, углеродное волокно, алюминий — почувствуйте настоящую роскошь S-класса в салоне HAN!
Автомобиль в наличии во всех официальных дилерских центрах BYD в Ташкенте.
#byduz#BuildYourDreams#bydauto#byduzbekistan#auto#bydauto#bydtashkent#bydhan#hanev
Bir finjon qahva ichayotgan vaqtingizda avtomobilni tezda quvvatlash imkoniyati.
CHAZOR akkumulyatorni atigi 30 daqiqada 30% dan 80% gacha to'ldiruvchi 17 kVt doimiy quvvatlash porti bilan jihozlangan. Avtomobil sayohatni davom ettirishga bir zumda tayyor bo'ladi.
BYD kompaniyasining O‘zbekistondagi rasmiy dilerlaridan so‘rang.
___
Мгновенная зарядка автомобиля, пока вы наслаждаетесь чашечкой кофе.
CHAZOR оснащен зарядным портом постоянного тока мощностью 17 кВт, который заряжает аккумулятор с 30% до 80% всего за 30 минут. И автомобиль вновь готов продолжить путешествие.
Спрашивайте у официальных дилеров BYD в Узбекистане.
#byduz#BuildYourDreams#bydauto#byduzbekistan#auto#bydauto#bydtashkent#bydchazor#CHAZOR
Innovatsion Vehicle-to-Load (V2L) texnologiyasi HAN avtomobilini mobil quvvat manbaiga aylantiradi.
Avtomobildan elektr jihozlarini quvvatlantirish orqali siz hatto yovvoyi tabiat sharoitida ham "energiya" erkinligidan to'liq bahramand bo'lishingiz mumkin.
HAN bilan istalgan joyda quvvatlaning!
___
Инновационная технология Vehicle-to-Load (V2L) превращает HAN в мобильный источник энергии.
Вы можете в полной мере оценить свободу «энергии» даже в условиях дикой природы, заряжая от автомобиля электроприборы для походов.
Будьте «заряжены» где угодно вместе с HAN!
#byduz#BuildYourDreams#bydauto#byduzbekistan#auto#bydauto#bydtashkent#bydhan#hanev