Установить свойства виджета в 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
Riyod-2025 VI Islom birdamligi oʻyinlarining tantanali ochilish marosimi oʻtkazildi. Ishtirokchi davlatlar paradida Oʻzbekiston delegatsiyasi ham qatnashdi.
—
Прошла торжественная церемония открытия VI Игр Исламской солидарности Рияд-2025. На параде участников присутствовала делегация Узбекистана.
#Riyod2025#OchilishMarosimi
👉@OlympicUz
olympic.uz I YouTube I Instagram I
Bahrayn-2025 III Osiyo yoshlar oʻyinlariga rasman start berildi
Bugun Bahrayn-2025 III Osiyo yoshlar oʻyinlarining tantanali ochilish marosimi oʻtkazildi. Tadbirda Sport vazirligi va MOQ rahbariyati ham ishtirok etib, delegatsiyalar paradida sportchilarimizni olqishlashdi.
Marosimda Azizbek Abdugʻafforov (yengil atletika) hamda Rushanaxon Ravshanova (taekvondo WT) delegatsiyamiz bayroqdori boʻlishdi.
Ma’lumot uchun, mazkur musobaqada Oʻzbekiston delegatsiyasi 20 sport turida 183 nafar atlet bilan qatnashadi.
—
Официально дан старт III Азиатским юношеским играм Бахрейн-2025
Сегодня состоялась торжественная церемония открытия III Азиатских юношеских игр Бахрейн-2025.
В мероприятии приняли участие представители Министерства спорта и Национального Олимпийского комитета Узбекистана, которые поддержали наших спортсменов во время парада делегаций.
Знаменосцами делегации Узбекистана стали Азизбек Абдугаффоров (лёгкая атлетика) и Рушанахон Равшанова (таэквондо WT).
Для сведения, в нынешних Играх Узбекистан представлен 183 спортсменами, выступающими в 20 видах спорта.
#Bahrayn2025#OchilishMarosimi
👉@OlympicUz
olympic.uz I YouTube I Instagram I
Al-Xorazmiy universitetining ochilish marosimi o‘tkazildi
Bugun universitetimizning rasmiy ochilish marosimi oʻtkazilib, yangi o‘quv yiliga start berildi. Ochilish marosimning davomi esa "Tanishtiruv haftaligi"ning taqdirlash marosimiga ulanib ketdi.
🔹 Marosim davomida talabalarga “Universitet a’zoligi” nishoni topshirildi.
🔹Universitetning yaqin hamkorlariga ”Universitet faxriy a’zosi” nishoni berildi.
✨Tadbir soʻngidagi ijodiy chiqishlar va kuy-qo’shiqlar mehmonlarda unutilmas taassurotlar qoldirdi.
#AlXorazmiyUniversiteti#ochilishmarosimi
🔁English
➖➖➖➖➖➖➖➖➖➖➖
👇 Bizning ijtimoiy tarmoqlarimiz:
Veb-sayt | Telegram | Instagram | Facebook | Aloqa-bot
Markazimiz ochilish marosimidagi unutilmas lahzalar bilan sizni ham ulashamiz!
Tadbir davomida iliq so‘zlar, quvonchli ko‘z yoshlari va kelajak sari dadil qadamlar bor edi.
#OchilishMarosimi#TOEFLUzbekistan
Markazimiz ochilish marosimidagi unutilmas lahzalar bilan sizni ham ulashamiz!
Tadbir davomida iliq so‘zlar, quvonchli ko‘z yoshlari va kelajak sari dadil qadamlar bor edi.
#OchilishMarosimi#TOEFLUzbekistan
Markazimiz ochilish marosimidagi unutilmas lahzalar bilan sizni ham ulashamiz!
Tadbir davomida iliq so‘zlar, quvonchli ko‘z yoshlari va kelajak sari dadil qadamlar bor edi.
#OchilishMarosimi#TOEFLUzbekistan
Markazimiz ochilish marosimidagi unutilmas lahzalar bilan sizni ham ulashamiz!
Tadbir davomida iliq so‘zlar, quvonchli ko‘z yoshlari va kelajak sari dadil qadamlar bor edi.
#OchilishMarosimi#TOEFLUzbekistan
Markazimiz ochilish marosimidagi unutilmas lahzalar bilan sizni ham ulashamiz!
Tadbir davomida iliq so‘zlar, quvonchli ko‘z yoshlari va kelajak sari dadil qadamlar bor edi.
#OchilishMarosimi#TOEFLUzbekistan
Markazimiz ochilish marosimidagi unutilmas lahzalar bilan sizni ham ulashamiz!
Tadbir davomida iliq so‘zlar, quvonchli ko‘z yoshlari va kelajak sari dadil qadamlar bor edi.
#OchilishMarosimi#TOEFLUzbekistan
Markazimiz ochilish marosimidagi unutilmas lahzalar bilan sizni ham ulashamiz!
Tadbir davomida iliq so‘zlar, quvonchli ko‘z yoshlari va kelajak sari dadil qadamlar bor edi.
#OchilishMarosimi#TOEFLUzbekistan
Markazimiz ochilish marosimidagi unutilmas lahzalar bilan sizni ham ulashamiz!
Tadbir davomida iliq so‘zlar, quvonchli ko‘z yoshlari va kelajak sari dadil qadamlar bor edi.
#OchilishMarosimi#TOEFLUzbekistan
🎉Yozgi institutga rasmiy start berildi!
14-iyul kuni Teach For Uzbekistan dasturining eng muhim bosqichlaridan biri — Yozgi institutning ochilish marosimi bo‘lib o‘tdi.
📍 Boʻstonliq tog‘lari bag‘rida, “Yoshlar oromgohi”da tashkil etilgan bu marosimda dastur ishtirokchilari, tashkilot jamoasi hamda hurmatli mehmonlar ishtirok etdi.
🎙 Institut faoliyati, maqsadlari va kelgusi haftalardagi o‘quv jarayonlari haqida Teach For Uzbekistan direktori va Yozgi institut rahbari tomonidan taqdimotlar o‘tkazildi.
🎵 Shuningdek, ochilish marosimidagi Rishat Band tomonidan ijro etilgan jonli kuy-qo‘shiqlar barchaga quvonch va unutilmas lahzalarni hadya etdi.
🔜 Oldinda esa — kuchli treninglar, ilhomlantiruvchi muloqotlar va o‘sish sari yo‘l!
#YozgiInstitut#TeachForUzbekistan#OchilishMarosimi#IlmUchun#LiderlarTayyorlanmoqda#YoshlarKelajagi
Telegram |Linkedln| Instagram |Youtube