Установить свойства виджета в 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
RAMAZON HAYITI NAMOZINING O‘QILISH VAQTLARI BILAN TANISHING!
Yurtimiz masjidlarida 2026-yil 20-mart – juma kuni Ramazon hayiti namozining o‘qilish vaqtlari quyidagicha belgilandi:
1. Andijon viloyati 06:40
2. Farg‘ona viloyati 06:40
3. Namangan viloyati 06:40
4. Toshkent shahar 06:50
5. Toshkent viloyati 06:50
6. Sirdaryo viloyati 06:55
7. Jizzax viloyati 07:00
8. Samarqand viloyati 07:00
9. Navoiy viloyati 07:05
10. Buxoro viloyati 07:05
11. Qashqadaryo viloyati 07:05
12. Surxondaryo viloyati 07:05
13. Xorazm viloyati 07:25
14. Qoraqalpog‘iston Respublikasi 07:30
#namoz#vaqt#ramazon_hayiti
✅ O‘zbekiston musulmonlari idorasi Matbuot xizmati
#xabar#istisqo#namoz
🕌 ЖУМА КУНИ ИСТИСҚО НАМОЗИ ЎҚИЛАДИ
🌙Динимиз таълимотида умумманфаатига хизмат қиладиган ишларга алоҳида эътибор қаратилади. Хусусан, Ислом тарихида қурғоқчилик кузатилган пайтларда истисқо намози ўқилгани ва унинг самараси кўрилгани келтирилган.
📿 Пайғамбаримиз соллаллоҳу алайҳи васаллам ёмғир ёғмай, сувсизлик бўлган даврларда жамоат билан қиблага юзланиб дуо қилганлари, кейин ўзлари имом бўлиб намоз ўқиганлари ривоят қилинган. Аллоҳ таолодан сув-ёмғир сўраладиган истисқо намози фазилати ҳадис китобларида баён қилинган.
📢 Жорий йилда куз фасли ёмғирсиз ўтаётгани, келгуси кунларда ҳам ёғингарчилик кутилмаётгани, ёмғир эса ризқу рўз, мўл-кўлчилик омили экани эътиборидан Ўзбекистон мусулмонлари идораси раиси, муфтий Шайх Нуриддин Холиқназар ҳазратлари ташаббуслари билан 2025 йил 28 ноябрь куни жума намозидан кейин юртимиздаги барча масжидларда Аллоҳ таолодан тавба-тазарру, истиғфор ила ёмғир сўраб, жамоат билан икки ракат истисқо намози ўқилади.
🗣 Шунингдек, вилоятлар, туман-шаҳарлар марказий масжидлари ва зиёратгоҳларда жонлиқлар сўйилиб, ёрдамга муҳтож оилалар, етим-есирлар, бева-бечоралар, мискинлар, боқувчисини йўқотган кексаларга тарқатилади.
🌙Ўзбекистон мусулмонлари идораси тасарруфидаги Олий ва ўрта махсус ислом таълим муассасалари устоз ва талабалари томонидан Имом Бухорий “Саҳиҳи Бухорий” асари шу йил 28 ноябрь куни жума намозига қадар хатми кутуб қилинади. Зеро, Имом Бухорийнинг “Саҳиҳ”лари қурғоқчиликда ўқилганда, Aллоҳ таолонинг иродаси ила ёмғир ёққани тарих китобларида ёзилган.
🤲🕋 Маккаи мукаррама ва Мадинаи мунавварада умра зиёратида бўлиб турган элликбоши имом-домлаларимиз Ҳарами шарифларда ўз гуруҳлари иштирокида истисқо намозини ўқишлари тавсия этилади.
🤲🌧 Аллоҳ таоло қилинажак тоат-ибодатлар, дуою тазарруларни даргоҳи илоҳийсида қабул айлаб, диёримизда обиҳаёт неъматини мўл-кўл этсин.
✅ Ўзбекистон мусулмонлари идораси
Матбуот хизмати
🌐MUSLIM.UZ GA 📲 OBUNA BO'LING✅ VA ULASHING🗣
▶️YouTube | 📷Instagram | 🔵Facebook