Установить свойства виджета в 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
Sizlar “Yangi O‘zbekiston” universitetining ilk bitiruvchilari sifatida tarixda qolasiz
⚡️Universitetimiz prorektorlari hamda faxriy prezidenti tomonidan bitiruvchilarimizga tabrik va samimiy tilaklar aytildi.
➖➖➖➖
You will go down in history as the very first graduates of New Uzbekistan University.
Our vice-rectors and honorary president extended their heartfelt congratulations and best wishes to our graduates.
#bitiruvoqshomi#graduation
⬇️ Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
Ilk bitiruv oqshomi yuqori kayfiyat va unutilmas xotiralarga boy boʻldi
Jarayonlardan fotoreportaj.
➖➖➖➖
The first graduation evening was filled with joy and unforgettable memories.
Here’s a photo report from the event.
#bitiruvoqshomi#graduation
⬇️ Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
“Yangi O‘zbekiston” bog‘ida universitetimizning ilk bitiruv marosimi bo‘lib o‘tdi
✨Ushbu tarixiy tadbir doirasida universitetning Dasturiy ta’minot muhandisligi, Mexanika muhandisligi hamda Kimyo vamaterialshunoslik muhandisligi yo‘nalishlarida tahsil olgan ilk 129 nafar bitiruvchimizga diplomlar topshirildi.
💥Diplom bilan birgalikda top-10 bitiruvchiga Prezident sovg‘asi ham topshirildi. Ushbu esdalik sovg‘ada eng bilimli 10 nafar bitiruvchi bilan davlat rahbarining surati va imzosi aks etgan bo‘lib, bu yoshlarga yanada yuksak ishonch va g‘urur bag‘ishladi.
🎗️Barcha bitiruvchilarimizning kelajakdagi ish va oʻqishlariga muvaffaqiyatlar tilaymiz.
🔁English
➖➖➖➖➖➖➖➖➖➖➖➖
#graduation#bitiruvoqshomi
⬇️ Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
“Yangi O‘zbekiston” universitetining ilk bitiruvmarosimi boshlandi
⭐️Mazkur havola orqali kirib,ushbu tarixiy oqshomni tomosha qilishingiz mumkin: https://www.youtube.com/live/AhCM8LanOz4?si=yna0ibrLfz9ONr0D
#bitiruvoqshomi#graduation
⬇️ Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
Class of 2025, entering the workforce soon? 👩🎓👨🎓 Tax season may not be here yet, but it’s never too early to understand your tax obligations — and how to reduce your tax bill 🤪
Adulting and taxes don’t have to be complicated. Check out the guide for new taxpayers on IRAS website here: https://www.iras.gov.sg/taxes/individual-income-tax/employees/basic-guide-for-new-individual-taxpayers
Still thinking about your next step after graduation? Explore a career with us at go.gov.sg/lifeatiras🌱
#irassg#lifeatiras#adulting#graduation
🎓Biznes va tadbirkorlik oliy maktabida bitiruvchilarga tantanali diplom topshirish marosimibo‘lib o‘tdi
🇬🇧✍️ The Graduate School of Business and Entrepreneurship held a solemn diploma awardceremony for the graduates
📖 В Высшей школе бизнеса и предпринимательства состоялась торжественнаяцеремония вручения дипломоввыпускникам🇷🇺
#GraduateSchool#Graduation#Ceremony#Diploma
🔝Web-site |🔝Facebook |🔝Instagram | 🔝Youtube
🎓Biznes va tadbirkorlik oliy maktabida bitiruvchilarga tantanali diplom topshirish marosimi bo‘lib o‘tdi
🇺🇿UZB
___
✍️ The Graduate School of Business and Entrepreneurship held a solemn diploma award ceremony for the graduates
🇬🇧ENG
___
📖 В Высшей школе бизнеса и предпринимательства состоялась торжественная церемония вручения дипломов выпускникам
🇷🇺RU
#GraduateSchool#Graduation#Ceremony#Diploma
🌐Web-site |
✅Telegram |
✅Facebook |
🌐Instagram
🎓O‘zbekiston Respublikasi Vazirlar Mahkamasi huzuridagi Biznes va tadbirkorlik oliy maktabida bitiruv marosimi bo‘lib o‘tdi
#GraduateSchool#Graduation#Ceremony#Diploma
Web-site| Telegram | Facebook| Instagram
Biznes va tadbirkorlik oliy maktabida bitiruv marosimi bo‘lib o‘tdi
🔎Batafsil
🇬🇧Eng
🇷🇺RU
#GraduateSchool#Graduation#Ceremony#Diploma
Web-site| Telegram | Facebook| Instagram
NIDO Russia congratulates all our students that graduated recently and those who are graduating soon.
I have been priviledged to attend some.
You deserve all KINDS of high fives and hugs! You worked hard and most importantly got it done! Congratulations!🎊🎉❤️
Thanks to all our coordinators who assisted their chapter members to make the day a memorable one.
Dr. Godwin E. Ibe
Chairman, NIDO Russia
Subscribe:@nido_russia
https://t.me/nido_russia/1693
#graduation#students#education#news#Nigeria#Russia
📅Kuni kecha Co-Learning Center 2 ta kurs nihoyasiga yetdi. Bu safar kurslarimizga nafaqat Inha balki boshqa o'quv muassasalaridan o'quvchilar qabul qildik.
✅ Yakunlangan SMM Specialist.3 va Flutter - mobile development kurslarida natija borasida ham o'sish sezildi. Mentorlarimiz Sadriddin Abduraximov va Abdurahim Abdullaev vazifalariga professional yondashishdi.
Endigi kurslarimiz qaysi yo'nalishda bo'lishini xohlaysiz? Izohlarda javobingizni qoldiring 👇
Sizga foydali bilim ulashishdan doimo mamnunmiz — @colearninguz💛
#weloveCLC#flutter#SMM#mobile_development#graduation#lucky