Установить свойства виджета в 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
Vashington shahrida O‘zbekiston va AQSh tashqi siyosat idoralari rahbarlari o‘rtasidagi uchrashuv do‘stona muhitda va o‘zaro ishonch ruhida o‘tdi.
Tomonlar O‘zbekiston–AQSh strategik sherikligini mustahkamlash, savdo-iqtisodiy aloqalarni kengaytirish, mintaqaviy xavfsizlik va barqarorlikni ta’minlash masalalarini muhokama qildilar.
#AQSh#Diplomatiya#StrategikSheriklik
@TIVmatbuot
O'zbekiston #Diplomatiya sining yuzlari
Senat tomonidan tashkil etilgan o'quv seminaridan so'ng O'zbekistonning xorijdagi elchilari, doimiy vakillari va bosh konsullari Senat Raisining birinchi o'rinbosari Sodiq Safoyev va tashqi ishlar vazirining o'rinbosari Sherzod Asadov bilan.
P.S. Bu yerdagi faqat ikkita ayolni topdingizmi?
@Diplomatika
_________________
Лица #Дипломатии#Узбекистана
Послы, постоянные представители и генеральные консулы Узбекистана за рубежом с первым заместителем председателя Сената парламента Садыком Сафаевым и заместителем министра иностранных дел Шерзодом Асадовым после семинара-тренинга, организованного Сенатом.
P.S. Вы смогли тут найти только двух женщин?
@Diplomatika
🇺🇿🇹🇷O‘zbekiston va Turkiya tashqi ishlar vazirlarining Qo‘shma strategik rejalashtirish guruhining 4-yig‘ilishi yakunlari bo‘yicha qo‘shma bayonoti
🔺Anqaradagi yig‘ilishga TIV rahbarlari Baxtiyor Saidov va Hakan Fidan hamraislik qildilar
🔺Batafsil
🔺Батафсил
#Oʼzbekiston#Turkiya#TIV#Diplomatiya
Рус | Eng | Facebook | X | YouTube | Instagram
🇨🇭 Jeneva – tinchlik va diplomatiya shahri
Jeneva – Shveysariyaning ikkinchi yirik shahri bo‘lib, Leman ko‘li bo‘yida joylashgan. U dunyo miqyosida diplomatiya va xalqaro tashkilotlar markazi sifatida tanilgan.
🌍BMTning Yevropadagi qarorgohi, Qizil Xoch qo‘mitasi, Jahon sog‘liqni saqlash tashkiloti (WHO), Xalqaro mehnat tashkiloti (ILO) kabi ko‘plab muhim tashkilotlar aynan shu yerda joylashgan.
🕊Tinchlik, inson huquqlari va neytrallik ruhi bilan sug‘orilgan Jeneva, har yili yuzlab xalqaro anjumanlarga mezbonlik qiladi.
⌚️Shu bilan birga, Jeneva – soatsozlik san’ati, shveysar shokoladi va nafis hayot tarzi bilan ham mashhur.
📌Jeneva – bu nafaqat shahar, bu tinchlik, taraqqiyot va insoniyatga xizmat qilish timsoli.
#Jeneva#Shveysariya#Diplomatiya#InsonHuquqlari#BMT
😎Instagram.😎Hayotalks
😎Telegram📱Khayotullo
Vladimir Putin Aleksei Erkhovni Rossiyaning O‘zbekistondagi yangi elchisi etib tayinladi. U avval Turkiyada elchi bo‘lib ishlagan va katta diplomatik tajribaga ega.
https://yep.uz/uz/2025/09/putin-erxov-yangi-elchi-ozbekiston/
#o‘zbekiston #rossiya#elchi#putin#diplomatiya
Shavkat Mirziyoyev Qatar amiri bilan muzokaralar olib bordi va «C5+1» sammitida ishtirok etish uchun Vashingtonga uchdi. Uchrashuvlar strategik hamkorlik, savdo, investitsiya, gumanitar sohalar va Markaziy Osiyo–AQSh munosabatlariga qaratiladi.
https://yep.uz/uz/2025/11/prezident-uzbekistan-qatardan-aqshga/
#Mirziyoyev#Oʻzbekiston#C5Plus1#Qatar#AQSh#Diplomatiya#Investitsiya
O‘zbekiston va Ukraina tashqi ishlar vazirlari Nyu-Yorkda BMT Bosh Assambleyasi doirasida uchrashib, muloqotni chuqurlashtirish va hamkorlikni kengaytirishga kelishdi.
https://yep.uz/uz/2025/09/ozbekiston-ukraina-tashqi-ishlar-unga/
#O‘zbekiston #Ukraina#Saidov#Sibiga#BMT#UNGA#diplomatiya#hamkorlik
O‘zbekiston Prezidenti Shavkat Mirziyoyev Toshkentda Janubiy va Markaziy Osiyo bo‘yicha AQSh maxsus vakili Serjio Gor va Davlat kotibi o‘rinbosari Kristofer Landau bilan uchrashdi. AQSh delegatsiyasining safari Qozog‘iston va O‘zbekistonga mintaqaviy safar doirasida o‘tmoqda.
https://yep.uz/uz/2025/10/ozbekiston-prezidenti-aqsh-maxsus-vakili-gor-landau/
#O‘zbekiston #AQSh#Mirziyoyev#Gor#Landau#Toshkent#uchrashuv#diplomatiya#C5plus1
Samarqandda MDH xavfsizlik va razvedka xizmatlari rahbarlarining 21-majlisi bo‘lib o‘tmoqda. Mirziyoyev mojarolarni diplomatik yo‘l bilan hal etish va mintaqaviy barqarorlikni mustahkamlashga chaqirdi.
https://yep.uz/uz/2025/10/mdh-maxsus-xizmat-rahbarlari-samarqand-mirziyoyev/
#Samarqand#MDH#Mirziyoyev#razvedka#xavfsizlik#diplomatiya#mintaqaviybarqarorlik#xalqaro xavfsizlik
Fransiyaning O‘zbekistondagi yangi elchisi Ualid FUK 2025-yil 27-avgustdan lavozimiga kirishdi. Nogironlar aravachasida bo‘lishiga qaramay, u diplomatik faoliyatini muvaffaqiyatli davom ettirmoqda va ikki mamlakat o‘rtasidagi hamkorlikni rivojlantirishga va’da berdi.
https://yep.uz/uz/2025/08/posol-nogironlar-aravachasida-fransiyaning-yangi-elchisi-uzbekistonda/
#fransiya#elchi#UalidFUK#nogironlararavachasi#o‘zbekiston #diplomatiya#hamkorlik#tarixiyyaqinlashuv