Установить свойства виджета в 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
Qadrli yurtdoshlar,
Saxovat, birdamlik va bagʻrikenglik timsoli – muborak Ramazon hayiti qutlugʻ boʻlsin. Ushbu ulugʻ ayyom barchangizning xonadoningizga toʻkin-sochinlik, osoyishtalik olib kelsin.
Hurmat bilan,
Oʻzbekiston Milliy Olimpiya qoʻmitasi
___
Уважаемые соотечественники,
Искренне поздравляем Вас с благословенным праздником Рамазан хайит — символом милосердия, единства и доброты. Пусть этот день принесёт в каждый дом достаток, спокойствие и благополучие.
С уважением,
Национальный Олимпийский комитет Узбекистана
#RamazonHayiti#Tabrik
👉@OlympicUz
olympic.uz I YouTube I Instagram I
Oʻzbekiston Respublikasi Prezidenti Shavkat Mirziyoyev nomiga muborak Iyd al-Fitr bayrami – Ramazon hayiti munosabati bilan xorijiy davlatlar va hukumatlar, yirik xalqaro va mintaqaviy tashkilotlar rahbarlari, taniqli din va jamoat arboblaridan samimiy qutlovlar kelmoqda.
—
В связи с наступлением светлого праздника Ийд-аль Фитр - Рамазан-хайита на имя Президента Республики Узбекистан Шавката Мирзиёева поступают поздравительные послания от глав зарубежных государств и правительств, крупных международных и региональных организаций, видных религиозных и общественных деятелей.
#Mirziyoyev#qutlovlar#Ramazonhayiti
Prezident.uz|Facebook|Instagram|YouTube|X
Oʻzbekiston Respublikasi Prezidenti Shavkat Mirziyoyev nomiga muborak Iyd al-Fitr bayrami – Ramazon hayiti munosabati bilan xorijiy davlatlar va hukumatlar, yirik xalqaro va mintaqaviy tashkilotlar rahbarlari, taniqli din va jamoat arboblaridan samimiy qutlovlar kelmoqda.
—
В связи с наступлением светлого праздника Ийд-аль Фитр - Рамазан-хайита на имя Президента Республики Узбекистан Шавката Мирзиёева поступают поздравительные послания от глав зарубежных государств и правительств, крупных международных и региональных организаций, видных религиозных и общественных деятелей.
#Mirziyoyev#qutlovlar#Ramazonhayiti
Prezident.uz|Facebook|Instagram|YouTube|X
Oʻzbekiston Respublikasi Prezidenti Shavkat Mirziyoyev nomiga muborak Iyd al-Fitr bayrami – Ramazon hayiti munosabati bilan xorijiy davlatlar va hukumatlar, yirik xalqaro va mintaqaviy tashkilotlar rahbarlari, taniqli din va jamoat arboblaridan samimiy qutlovlar kelmoqda.
—
В связи с наступлением светлого праздника Ийд-аль Фитр - Рамазан-хайита на имя Президента Республики Узбекистан Шавката Мирзиёева поступают поздравительные послания от глав зарубежных государств и правительств, крупных международных и региональных организаций, видных религиозных и общественных деятелей.
#Mirziyoyev#qutlovlar#Ramazonhayiti
Prezident.uz|Facebook|Instagram|YouTube|X
#Chilonzor
#RamazonHayiti
#Obodonlashtirish
#E’tibor #G‘amxo‘rlik #BayramTuhfasi
Chilonzorda obodonlashtirish xodimlariga bayram e’tibori
Ramazon hayiti munosabati bilan Chilonzor tumani hokimi Saidqahhor Xolxo‘jayev tuman Obodonlashtirish boshqarmasida faoliyat olib borayotgan xodimlarni bayram bilan samimiy qutladi.
Uchrashuv davomida obodonlashtirish sohasida mehnat qilayotgan xodimlarning shaharning obodligi va ozodaligini ta’minlashdagi fidokorona xizmatlari alohida e’tirof etildi.
Shuningdek, tuman hokimligi tomonidan Obodonlashtirish boshqarmasi xodimlariga bayram munosabati bilan oziq-ovqat jamlanmalari tarqatildi.
Mazkur e’tibor va g‘amxo‘rlik bayram kunlarida aholi uchun munosib sharoit yaratishda jonbozlik ko‘rsatayotgan xodimlarga ko‘tarinki kayfiyat bag‘ishladi.
👉👉👉Lavhamizda jarayonlar
@Chilonzor_tuman_hokimligi
#Chilonzor
#RamazonHayiti
#Xavfsizlik
#HuquqTartibot
#Profilaktika
#JamoatTartibi
Chilonzorda Ramazon hayiti arafasida xavfsizlik choralari kuchaytirildi
Chilonzor tumani hokimi Saidqahhor Xolxo‘jayev boshchiligida tumandagi huquq-tartibot idoralari mas’ul mutasaddilari va xodimlari ishtirokida ertaga keng nishonlanadigan Ramazon hayiti tadbirlarini yuqori saviyada va xavfsiz o‘tkazishni ta’minlashga qaratilgan saf yig‘ilishi bo‘lib o‘tdi.
Yig‘ilish davomida bayram kunlari jamoat tartibini saqlash, aholi xavfsizligini ta’minlash, yo‘l harakati xavfsizligini kuchaytirish hamda fuqarolarga qulay sharoitlar yaratish masalalariga alohida e’tibor qaratildi.
Mas’ullarga hududlarda kuchaytirilgan nazorat o‘rnatish, aholi gavjum joylarda profilaktik tadbirlarni samarali tashkil etish hamda favqulodda holatlarning oldini olish bo‘yicha aniq topshiriqlar berildi.
Shuningdek, barcha xizmatlar o‘rtasida hamkorlikni yanada mustahkamlash, tezkorlik va shaylik darajasini oshirish yuzasidan zarur choralar belgilab olindi.
👉👉👉Lavhamizda tadbir jarayonlari
@Chilonzor_tuman_hokimligi
#Chilonzor
#RamazonHayiti
#Masjidlar
#O‘rganish
#Obodonlashtirish#Sanitariya#Xavfsizlik#Toshkent
Chilonzorda Ramazon hayiti namozi oldidan masjidlar holati o‘rganildi
Chilonzor tumani hokimi Saidqahhor Xolxo‘jayev boshchiligida mas’ul mutasaddilar tomonidan ertaga Ramazon hayiti namozi o‘qiladigan masjidlar holati o‘rganildi.
O‘rganishlar jarayonida masjidlardagi kommunal tizimlarning ishlash holati, jumladan, elektr ta’minoti, suv va boshqa infratuzilma tarmoqlarining uzluksiz faoliyati alohida nazoratdan o‘tkazildi.
Shuningdek, masjidlar atrofidagi hududlar, piyodalar yo‘laklari va yo‘llarning sanitariya holati ko‘zdan kechirilib, ularni tartibga keltirish bo‘yicha tegishli topshiriqlar berildi.
Mas’ullarga bayram kuni fuqarolar uchun qulay va xavfsiz sharoitlar yaratish, tartib-intizomni ta’minlash hamda xizmatlar faoliyatini muvofiqlashtirish yuzasidan aniq vazifalar yuklatildi.
@Chilonzor_tuman_hokimligi