Установить свойства виджета в 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
#HAYIT MUBORAK BO'LSIN
Aziz yurtdoshlar, Fanlar akademiyasi akademiklari, olimlari, jonkuyar va fidoyi xodimlari! Sizlarni qutlug' Ramazon hayiti bilan samimiy tabriklaymiz.
Jamiyatimiz farovonligi va ilm-fan rivoji yo'lidagi sharafli faoliyatingizda ulkan zafarlar tilaymiz.
Tilagimiz osmonimiz hamisha musaffo, yurtimiz tinch-farovon, dasturxonlarimiz to'kin bo'lsin! Barchangizga uzoq umr, sihat-salomatlik tilab qolamiz!
Hayit ayyomingiz muborak bo'lsin!
O'ZBEKISTON RESPUBLIKASI FANLAR AKADEMIYASI
Bizni kuzatib boring👇
😎Telegram |🌐Websayt
😎Facebook |😎YouTube|😎Instagram
🌛🌛🌛 С наступающим праздником Рамазан Хаит
Как и в венчурной индустрии, сильные результаты начинаются с веры в долгосрочную стратегию, дисциплины и правильных партнерств.
Сегодня мы благодарим каждого, кто вместе с нами строит будущее.
Пусть этот день принесет гармонию в ваши команды и вдохновение для новых свершений. Развиваемся и создаем вместе.
Светлого праздника вам и вашим близким
— UzVC Team
————
🌛🌛🌛 Ramazon Hayiti muborak bo‘lsin
Venchur sanoatida bo‘lgani kabi, kuchli natijalar uzoq muddatli strategiyaga bo‘lgan ishonch, intizom va to‘g‘ri hamkorliklardan boshlanadi.
Bugun biz bilan birga kelajakni barpo etayotgan har bir insonga minnatdorchilik bildiramiz.
Ushbu kun jamoalaringizga uyg‘unlik va yangi yutuqlar uchun ilhom olib kelsin. Birgalikda rivojlanamiz va yaratamiz.
Sizga va yaqinlaringizga muborak bayram tilaymiz
— UzVC Team
————
🌛🌛🌛 Eid Mubarak, Happy Ramadan Hayit
Just like in the venture industry, strong results begin with belief in the long game, discipline and the right partnerships.
Today, we are grateful to everyone who is building the future alongside us.
May this day bring harmony to your teams and inspiration for new achievements. Let's grow and create together.
Wishing you and your loved ones a bright and joyful holiday
— UzVC Team
🌐Website |📷Instagram |🌐LinkedIn
#Hayit#Ramadan
#ITC
#Hayit#muborak
"Taqobbalallohu minna va minka"
(Alloh bizdan va sizdan qabul qilsin).
Imom Ahmad rivoyati
🌙 O'zbekiston tumanidagi Raqamli texnologiyalar o'quv markazi barcha dindoshlarimizni Ramazon Hayiti bilan qutlaydi!
🤲 Chin yurakdan dunyodagi eng ezgu tilaklarni bildiramiz. Yaratgan barchamizni afv etsin. Keyingi Ramazonlarga nasib etsin, omin.
@ITCenter_Yaypan
💥Aziz do'stlar, barchangizni Arafa kuni bilan samimiy muborakbod etamiz.
✨ Sizga uzoq umr, mustahkam sog'lik, dasturxoningizga to'kin sochinlik, xonadoningizga esa fayz-baraka tilaymiz. Bayram kunlari quvonchli, baxtli va yoqimli onlarga to'la bo'lsin.
__________________________
💥Дорогие друзья, поздравляем Вас с днем Арафа.
✨ Желаем Вам крепкого здоровья, долголетия, достатка и благополучия. Пусть праздничные дни будут полны приятными моментами радости и счастья.
#Arafa#Hayit#eid#bayram#Artel
Qadrli do‘stlar! Sizlarni Ramazon Hayiti bayrami bilan tabriklaymiz! Siz va yaqinlaringizga sixat-salomatlik, quvonch va oilaviy hotirjamlik tilaymiz! Qalbingiz har kuni quvonch, iliqlik va mehrga to‘lsin!
_______________________
Дорогие друзья! Поздравляем Вас со светлым праздником Рамазан Хайит! Пусть Вы и Ваши близкие пребывают в добром здравии, мире и радости! Желаем Вам процветания, постоянного развития и семейного благополучия. Пусть ваши сердца наполняются радостью, теплом и добротой каждый день!
CNC Uzbekistan.
#eidmubarak#ramazon#hayit#cncelectric#cnc#cncuzbekistan#cnctashkent
Hurmatli do'stlar!
🤩Ramazon hayiti muborak bo'lsin! Bu muborak kunlar sizga tinchlik, baxt va quvonch olib kelsin. Yaqinlaringiz bilan birga o‘tkazadigan har bir daqiqangiz qadrli bo‘lsin. Hayit bayrami – bu nafaqat o‘zaro mehr-muhabbatni oshirish, balki bir-birimizga yordam berish va qo‘llab-quvvatlash davridir.
KUTILGAN FURSAT jamoasi sizni bayram bilan tabriklaydi va sizning har bir orzularingiz amalga oshishini tilaydi. Biz siz bilan birga, yangi imkoniyatlar va muvaffaqiyatlarga erishishda davom etamiz.
Bayramingiz muborak bo‘lsin!
#bayram#ayyom#ramazon#hayit#muborak
📱 YouTube | 📱 Instagram | 📱 Facebook
Ohangaron shahrida bayram shukuhi hukm surmoqda
🌙 Ramazon oyida arzonlashtirilgan yarmarka doimiy faoliyat yuritib, Hayit bayrami arafasida ham narxlar barqaror ta’minlanmoqda.
🇺🇿 Xalq deputatlari Ohangaron shahar Kengashi kotibiyati mudiri Oybek Abdullayev tomonidan shahar Dehqon bozorida muborak Hayit ayyomi hamda Navro‘z bayrami munosabati bilan tashkil etilgan arzonlashtirilgan yarmarka faoliyati o‘rganildi.
✔️ Aholiga qulaylik yaratish, narx-navoning barqarorligini ta’minlash hamda bayram kayfiyatini yuksaltirish maqsadida tashkil etilgan ushbu yarmarka samarali xizmat qilmoqda.
#Ohangaron#Yarmarka#Navro‘z #Hayit#Deputatlar#BayramShukuhi
🇺🇿Ohangaron shahar hokimligi
Axborot xizmati
Telegram|Instagram|Youtube|Websayt|Facebook