Установить свойства виджета в 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
🏂 Chaqqon LIME — hambi’da sport o‘yini
Yangi Chaqqon LIME o‘yinida o‘zingizni sinab ko‘ring: LIME timsolini boshqaring, qorli trassalardan tezlik bilan pastga tushing va eng yaxshi natijalar uchun sovrinlarni qo‘lga kiriting.
Chaqqon LIME’da siz uchun:
🕔 Har kuni 3 ta bepul o‘yin sessiyasi
📱Turli murakkablik darajasiga ega 4ta trassa
🎁 Tezlik va natijalar uchun sovrinlar
🙂 hambi ilovasini yangilang va Chaqqon Lime o‘yinini boshlang
Qanchalik tez tushsangiz — shunchalik yuqori natija va qimmatli sovrinlarga ega bo‘lasiz. Batafsil
• • •
🏂 Chaqqon LIME — зимняя игра в hambi
Проверьте себя в новой игре Chaqqon LIME: управляйте маскотом LIME, мчитесь по снежным трассам и зарабатывайте награды за лучший результат.
В игре вас ждут:
🕔 3 бесплатные игровые сессии каждый день
📱 4 трассы с разным уровнем сложности
🎁 Призы за прохождение трасс и скорость
🙂Обновите приложение hambi и запустите игру Chaqqon Lime
Чем быстрее спуск — тем выше прогресс и ценнее награды. Подробнее
#hambi
Biz - Hambi Super ilovamiz 🚀
Biz boshlaymiz.
An'anaviy telekommunikatsiya xizmatlaridan tashqariga chiqadigan muammolarni hal qilish uchun yanada ko'proq imkoniyatlar. 📱💡
Beeline Uzbekistan hali ham sizning operatoringiz bo‘lib qolmoqda, Hambi esa yangilangan ilova bo‘lib, u yanada qulay va ko`proq funksiyalarga ega bo‘ladi!
Sizning fikr-mulohazalaringizni kutamiz! 💬✨#hambi
Hambini hozir yuklab oling va sinovni boshlang!
iOS - Yuklab olish
Android - Yuklab olish
• • •
Мы — суперприложение Hambi 🚀
И мы начинаем.
Ещё больше возможностей для решения задач, выходящих за рамки обычных телеком-услуг. 📱💡
Beeline Uzbekistan по-прежнему остаётся вашим оператором, а Hambi — это обновлённое приложение, которое станет ещё удобнее и функциональнее!
С нетерпением ждём ваших отзывов! 💬✨#hambi
Скачайте Hambi прямо сейчас и начните тестировать!
IOS - Скачать
Android - Скачать
🤩 hambi'da yanada ko‘proq takliflar va chegirmalar
Endi hambi ilovasining BeeMarket bo‘limida smartfon va boshqa turdagi texnikani xarid qilishingiz mumkin.
Muddatli to‘lovga olish imkoniyati ham mavjud.
🎁 11.11 aksiyasi doirasida esa 50% chegirma bilan smartfon xarid qilishingiz mumkin!
Aksiya 30-noyabrgacha amal qiladi.
⏬Ilovani yuklab oling
• • •
Ещё больше предложений и скидок в 🤩 hambi
Теперь в приложении hambi можно покупать смартфоны и другую технику в разделе BeeMarket.
Возможна рассрочка.
🎁 А по акции 11.11 вы можете подобрать себе смартфон со скидкой до 50%!
Акция до 30 ноября.
⏬Скачать приложение
#aksiya#hambi
Зимняя игра в hambi ❄️ LIME TIME
Бросайте снежки, набирайте очки и получайте возможность выиграть:
• Смартфоны, колонки и Mi-Fi роутеры
• Безлимитный интернет со скидкой 30%
• А также: интернет-пакеты и тарифы со скидкой, промокоды и многое другое
⬇️Обновите приложение hambi и запустите игру LIME TIME
3 игры в день — бесплатно.
Дополнительные — всего за 1 000 сумов за игру.
До 9 января 2026г. включительно. Подробнее
#hambi#limetime#game
🙂hambi aloqa va moliya xizmatlarini yagona interfeysda birlashtiradi!
📱Operator xizmatlari uchun to‘lov, 🔍 kartalar bo'yicha xarajatlar monitoringi va 💸 tezkor o‘tkazmalar — bularning barchasi bitta ilovada mavjud.
Biz siz uchun qulaylik yaratishga va xizmatlarni boshqarish jarayonini tushunarli hamda ishonchli qilishga intilamiz.
⏬Ilovani yuklab olish *1#
• • •
🙂hambi объединяет сервисы связи и финансов в единый интерфейс!
📱Оплата услуг оператора, 🔍 мониторинг расходов по картам и 💸моментальные переводы — всё доступно в одном приложении.
Мы ценим ваш комфорт и стремимся сделать процесс управления сервисами интуитивным и надёжным.
⏬Скачать приложение *1#
#hammasibitta#hambi#superapp#суперапп
🔥 Реклама, которая чувствует момент лучше, чем ваш барista
Чувствуете… Этот идеальный капучино, который появляется ровно тогда, когда мозг кричит «кофеина!»? Теперь так же работает и реклама.
Суперапп Hambi стал частью VEON Ads.
Приложение, где каждый день:
📲 Пополняют баланс
🏥 Записываются к врачу
💸 Оплачивают счета
И вот — бам! — ваше предложение:
• Не баннер, а продолжение мысли
• Не прерывание, а следующая логичная ступень
• Как совет друга, который знает, что вам нужно прямо сейчас
Пример:
🚀Пользователь оплачивает страховку → получает оффер от автосервиса. Не «ой, реклама», а «как вовремя!»
Наши алгоритмы работают как психологический триггер — ловят моменты, когда человек максимально открыт к предложениям.
👉 Хотите, чтобы ваш бренд появлялся в нужный момент?
Не пишите нам. Серьёзно.
Просто подумайте об этом — и мы уже пришлём вам оффер 😏
#SuperApp#VEONAds#Hambi#DigitalMarketing#AdTech#ContextualAdvertising#RightPlaceRightTime
👋👋Всё о digital-рекламе в Узбекистане: аналитика, лайфхаки и готовые решения.
🔄VEON AdTech digital расширяет свою экосистемуVEON Ads стратегическим подключением финтех сервиса Beepul, мобильного приложения связи OQи супераппа hambi — это платформы, которые ежедневно используют миллионы узбекистанцев.
ℹ️Что получают бренды?
🆕 Еще больше форматов для показа рекламных сообщений
👀 Высокую вовлечённость пользователей
🎯 Точное попадание в целевую аудиторию
Узнайте, как это работает 👇
🖥https://uznews.uz/ru/news/103508
https://veonadtech.com/ru
#VEONAdTech#VEONAds#AdTech#DigitalMarketing#Beepul#OQ#hambi#Ecosystem#DataDriven