Установить свойства виджета в 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
🇺🇿O‘zbekistonda shunday joy borligini bilarmidingiz?
Bu joy shunday joyki dunyo bo‘ylab faqatgina 2ta davlatda bor, birinchisi Fransiyada bo’lsa, ikkinchisi O‘zbekiston Respublikasi, Toshkent viloyatida joylashgan O‘zbekiston Respublikasi Fanlar akademiyasi Materialshunoslik institutiga qarashli
Katta quyosh pechi hisoblanadi.
Bu joylashuv to‘g‘risida batafsil ma'lumotni yuqoridagi rasmlar orqali olishingiz mumkin.
📍Joylashuv
#KattaQuyoshPechi#Parkent
@seeyouzbekistan • O’zbekistonni biz bilan kashf eting!
🇺🇿O‘zbekistonda shunday joy borligini bilarmidingiz?
Bu joy shunday joyki dunyo bo‘ylab faqatgina 2ta davlatda bor, birinchisi Fransiyada bo’lsa, ikkinchisi O‘zbekiston Respublikasi, Toshkent viloyatida joylashgan O‘zbekiston Respublikasi Fanlar akademiyasi Materialshunoslik institutiga qarashli
Katta quyosh pechi hisoblanadi.
Bu joylashuv to‘g‘risida batafsil ma'lumotni yuqoridagi rasmlar orqali olishingiz mumkin.
📍Joylashuv
#KattaQuyoshPechi#Parkent
@seeyouzbekistan • O’zbekistonni biz bilan kashf eting!
🇺🇿O‘zbekistonda shunday joy borligini bilarmidingiz?
Bu joy shunday joyki dunyo bo‘ylab faqatgina 2ta davlatda bor, birinchisi Fransiyada bo’lsa, ikkinchisi O‘zbekiston Respublikasi, Toshkent viloyatida joylashgan O‘zbekiston Respublikasi Fanlar akademiyasi Materialshunoslik institutiga qarashli
Katta quyosh pechi hisoblanadi.
Bu joylashuv to‘g‘risida batafsil ma'lumotni yuqoridagi rasmlar orqali olishingiz mumkin.
📍Joylashuv
#KattaQuyoshPechi#Parkent
@seeyouzbekistan • O’zbekistonni biz bilan kashf eting!
⚡️Toshkent viloyati Parkent tumani “Xurriyat” mahallasida istiqomat qiluvchi yosh hunarmand M. Nazmiddinovaning bandligini ta’minlash hamda tadbirkorlik faoliyatini qo‘llab-quvvatlash borasida aniq maqsadli amaliy choralar ko‘rilmoqda.
📌Xususan, Respublika “Hunarmand” uyushmasi raisi R. Mirzaaxmedov tashabbusi bilan fuqaro M. Nazmiddinova imtiyozli tartibda uyushmaga a’zo etilib, unga hunarmandchilik faoliyatini tashkil etish uchun zarur bo‘lgan tikuv uskunasi ajratildi.
🌍Shuningdek, yosh hunarmandning faoliyati bilan yaqindan tanishish maqsadida uning ustaxonasiga tashrif buyurilib, ishlab chiqarish jarayonlari o‘rganildi hamda tegishli tavsiyalar berildi.
📊Mazkur amaliy ko‘mak yoshlarning bandligini ta’minlash, ularni kasb-hunarga yo‘naltirish, barqaror daromad manbalarini shakllantirish hamda ijtimoiy-iqtisodiy faolligini oshirishga xizmat qilmoqda.
#Hunarmand#Parkent#ToshkentViloyati
Faсebook|
✅Instagram
✅Youtube |
✅Murojaat yo'llash
Давлатимиз раҳбари Паркент туманига ташриф чоғида Кумушкон маҳалласида бўлиб, сайёҳлик салоҳияти ва меҳмон уйларини кўздан кечирди.
—
В ходе поездки в Паркентский район глава нашего государства посетил махаллю Кумушкон, где ознакомился с туристическим потенциалом и деятельностью гостевых домов.
#Mirziyoyev#tanishuv#Parkent#turizm
Prezident.uz|Facebook|Instagram|YouTube|X
Президент Шавкат Мирзиёев Паркент туманига ташриф буюриб, “Паркентсой” турар-жой массивининг қурилиши билан танишди. Шу ерда туманни янада ривожлантириш чора-тадбирлари бўйича тақдимот ҳамда паркентлик фаоллар билан мулоқот бўлиб ўтди.
—
Прибыв в Паркентский район, Президент Шавкат Мирзиёев ознакомился со строительством жилого массива "Паркентсой". Здесь же состоялись презентация о мерах перспективного развития и диалог с активом района.
#Mirziyoyev#tanishuv#Parkent#bunyodkorlik
Prezident.uz|Facebook|Instagram|YouTube|X
Президент Шавкат Мирзиёев Паркент туманида интенсив боғ фаолияти билан танишди.
—
Президент Шавкат Мирзиёев ознакомился с деятельностью интенсивного сада в Паркентском районе.
#Mirziyoyev#tanishuv#Parkent#qishloqxujaligi
Prezident.uz|Facebook|Instagram|YouTube|X
📍Toshkent viloyati, Parkent tumani
📊51-maktabda Payshanba – “Yoshlar kuni” doirasida "Rahbar va yoshlar" tadbir jarayonidan lavhalar 📺
Rahbar va yoshlar uchrashuvi samimiy ruhda o‘tdi 🤝
#YoshlarKuni#Parkent#Uchrashuv
Faсebook|
✅Instagram
✅Youtube |
✅Murojaat yo'llash
📍 Toshkent viloyati, Parkent tumani
⚡️Bugun, 16-aprel kuni Parkent tumanidagi 51-sonli umumta’lim maktabida Payshanba – “Yoshlar kuni” munosabati bilan “Rahbar va yoshlar” uchrashuvi tashkil etildi.
👍Mazkur uchrashuv “Hunarmand” uyushmasi Toshkent viloyat boshqarmasi boshlig‘i E. Xujamiyarov, tuman hokimi, tuman prokurori, Turizm politsiyasi boshlig‘i hamda yoshlar yetakchilari hamkorligida o‘tkazildi.
📊Uchrashuv davomida yoshlar o‘rtasida ta’lim olish, kasb-hunar egallash, ekologik madaniyatni rivojlantirish kabi dolzarb mavzularda ochiq muloqot olib borildi. Yoshlar o‘zlarini qiziqtirgan savollarga javob olib, o‘z taklif va tashabbuslari bilan faol ishtirok etdilar.
🌍Tadbir yakunida rahbarlar va yoshlar o‘rtasida samimiy suhbat bo‘lib o‘tdi. Unda yoshlarning erishgan yutuqlari e’tirof etilib, kelgusidagi rejalar muhokama qilindi.
#YoshlarKuni#Parkent#YoshlarBilanUchrashuv
Faсebook|
✅Instagram
✅Youtube |
✅Murojaat yo'llash