Установить свойства виджета в 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
Kimyo va materialshunoslik muhandisligi: butun dunyoda talab yuqori soha
💥 “Yangi O‘zbekiston” universitetida 2023/2024 o‘quv yili uchun Kimyo va materialshunoslik muhandisligi yo‘nalishiga o‘qishga hujjatlar qabuli davom etmoqda!
🌐Kimyo muhandislari yurtimizda o'rtacha $1,500-$2000, xalqaro miqyosda esa $7,920-$11,666 atrofida maosh olishlari mumkin.
☑️Kvota soni: 50 ta
✅Grantlar soni:
🔹Eng yuqori bal to‘plagan 5 nafar talabaga 100%;
🔹undan keyingi 5 nafar talabaga 70%;
🔹keyingi 8 nafar talabaga 50% bir yillik grant ajratiladi.
❗️Ushbu grantlar soni talabgorlar bir xil bal to'plaganda oshishi mumkin.
📌 Bundan tashqari, xalqaro kimyo olimpiadasi,Prezident maktabi bitiruvchilari,Ixtisoslashtirilgan maktablardan qabul qilingan 5% talabalar hamda Ijtimoiy himoya yagona reestriga kirgan oila a’zolariga 4 yillik 100% grant ajratiladi.
📩O‘qishga ariza topshirish:https://newuu.uz/uz/admission/agreement?type=admission_form
🔁 English
➖➖➖➖➖➖➖➖➖➖➖➖➖➖
#qabul_2023#kimyo
⬇️Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
Prezident Shavkat Mirziyoyev kimyo sanoatidagi yirik investitsiya loyihalarini amalga oshirish va yangi ishlab chiqarish quvvatlarini ishga tushirish boʻyicha olib borilayotgan ishlar yuzasidan taqdimot bilan tanishdi.
—
Президент Шавкат Мирзиёев ознакомился с презентацией о ходе работ по реализации крупных инвестиционных проектов и запуску новых производственных мощностей в химической промышленности.
#Mirziyoyev#taqdimot#sanoat#kimyo
Prezident.uz|Facebook|Instagram|YouTube|X
Prezident Shavkat Mirziyoyev kimyo sanoatidagi yirik investitsiya loyihalarini amalga oshirish va yangi ishlab chiqarish quvvatlarini ishga tushirish boʻyicha olib borilayotgan ishlar yuzasidan taqdimot bilan tanishdi.
—
Президент Шавкат Мирзиёев ознакомился с презентацией о ходе работ по реализации крупных инвестиционных проектов и запуску новых производственных мощностей в химической промышленности.
#Mirziyoyev#taqdimot#sanoat#kimyo
Prezident.uz|Facebook|Instagram|YouTube|X
Prezident Shavkat Mirziyoyev kimyo sanoatidagi yirik investitsiya loyihalarini amalga oshirish va yangi ishlab chiqarish quvvatlarini ishga tushirish boʻyicha olib borilayotgan ishlar yuzasidan taqdimot bilan tanishdi.
—
Президент Шавкат Мирзиёев ознакомился с презентацией о ходе работ по реализации крупных инвестиционных проектов и запуску новых производственных мощностей в химической промышленности.
#Mirziyoyev#taqdimot#sanoat#kimyo
Prezident.uz|Facebook|Instagram|YouTube|X
Prezident Shavkat Mirziyoyev kimyo sanoatidagi yirik investitsiya loyihalarini amalga oshirish va yangi ishlab chiqarish quvvatlarini ishga tushirish boʻyicha olib borilayotgan ishlar yuzasidan taqdimot bilan tanishdi.
—
Президент Шавкат Мирзиёев ознакомился с презентацией о ходе работ по реализации крупных инвестиционных проектов и запуску новых производственных мощностей в химической промышленности.
#Mirziyoyev#taqdimot#sanoat#kimyo
Prezident.uz|Facebook|Instagram|YouTube|X
Prezident Shavkat Mirziyoyev kimyo sanoatidagi yirik investitsiya loyihalarini amalga oshirish va yangi ishlab chiqarish quvvatlarini ishga tushirish boʻyicha olib borilayotgan ishlar yuzasidan taqdimot bilan tanishdi.
—
Президент Шавкат Мирзиёев ознакомился с презентацией о ходе работ по реализации крупных инвестиционных проектов и запуску новых производственных мощностей в химической промышленности.
#Mirziyoyev#taqdimot#sanoat#kimyo
Prezident.uz|Facebook|Instagram|YouTube|X
"Buyuk allomalar izidan" nomli olimpiadaning kimyo fanidan final bosqichi yakunlandi
✅Tez orada ishtirokchilarning natijalari tekshirilib, g'olib hamda sovrindorlar e'lon qilinadi. Bizni kuzatib borishda davom eting.
#olimpiada#buyuk_allomalar_izidan#kimyo
⬇️Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
⚡️“Yangi O‘zbekiston” universiteti tomonidan tashkil etilgan “Buyuk allomalar izidan” olimpiadasining kimyo fanidan final bosqichi 6-may kuni o'tkaziladi!
🗓Final “Yangi O‘zbekiston” universitetidasoat 10:00 da boshlanadi.
✅Olimpiadaga final bosqichiga o‘tgan barcha bitiruvchi sinf o‘quvchilari o‘z yaqinlari bilan kelishlari mumkin.
🎗G‘oliblar shu kunning o‘zida taqdirlanadi!
🏆 Eslatib o‘tamiz, olimpiadada mutlaq g‘olib 20 million so'm pul mukofoti, shuningdek, 10 nafar sovrindor esa 2 million so‘mdan pul mukofotlari va “Yangi O‘zbekiston” universitetida tahsil olish uchun 38 million so‘mlik grant hamda medal va boshqa qimmatbaho sovg‘alar bilan taqdirlanadi.
🔁English
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
#olimpiada#buyuk_allomalar_izidan#kimyo
⬇️Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
Prezident Shavkat Mirziyoyev kimyo sanoatida ishlab chiqarish va eksportni oshirish hamda tannarxni pasaytirish yuzasidan taqdimot bilan tanishdi.
—
Президент Шавкат Мирзиёев ознакомился с презентацией по вопросам увеличения производства и экспорта, снижения себестоимости продукции в химической промышленности.
#Mirziyoyev#taqdimot#sanoat#kimyo
Prezident.uz|Facebook|Instagram|YouTube|X
Jizzaxlik o‘quvchi 20 million so‘mlik pul mukofoti sovrindori!
⚡️Bugun “Buyuk allomalar izidan” nomli olimpiadaning kimyo fanidan final bosqichida Jizzax viloyatidan kelgan Muqaddas Ismoilova mutlaq g‘oliblikni qo‘lga kiritdi. Unga 20 million so'm pul mukofoti, 38 million so'mlik grant, medal va boshqa sovg'alar taqdim etildi.
💥 Shuningdek, yurtimizning Buxoro, Samarqand va Namangan kabi viloyatlaridan kelgan 10 nafar ishtirokchilar ham kumush va bronza medali sohibi bo'lishdi. Ularga ham 2 million so'mdan pul mukofoti va “Yangi O‘zbekiston” universitetida tahsil olishlari uchun 38 million so‘mlik grantlar taqdim etildi.
🎗Olimpiada barcha uchun unutilmas tarzda ko‘tarinki ruhda o‘tkazildi.
#olimpiada#kimyo#final
⬇️Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
Prezident Shavkat Mirziyoyev kimyo sanoatidagi yirik investitsiya loyihalarini amalga oshirish va yangi ishlab chiqarish quvvatlarini ishga tushirish boʻyicha olib borilayotgan ishlar yuzasidan taqdimot bilan tanishdi.
—
Президент Шавкат Мирзиёев ознакомился с презентацией о ходе работ по реализации крупных инвестиционных проектов и запуску новых производственных мощностей в химической промышленности.
#Mirziyoyev#taqdimot#sanoat#kimyo
Prezident.uz|Facebook|Instagram|YouTube|X
“Yangi O‘zbekiston” universitetida Toshkent tibbiyot akademiyasi akademik litseyi o‘quvchilari uchun mahorat darslari o‘tkazildi
🔬Universitet hayotiga qiziqishi yuqori litsey o‘quvchilari uchun talabalarimiz tomonidan mahorat darsi tashkil etilib, mazkur mahorat darslari davomida turli kimyoviy eksperimentlar o‘tkazildi.
🔁English
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
#eksperiment#kimyo#mahorat_darslari
⬇️Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook