Установить свойства виджета в 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
Он уже почти согласен… осталось только правильно намекнуть.
Экосистема VEON Ads для e-commerce — это как ненавязчивый психолог-продажник:
🔮 Видит, что заинтересовало пользователя
🛍 Ловит момент готовности к покупке
🛒 Превращает «почти купил» в «заказал» без давления
Пример:
— Просмотрел кроссовки — «Получил предложение с бесплатной доставкой»
— Бросил корзину с техникой — «Спец цена на последний экземпляр»
— Смотрел украшения — «Подборка и промокод»
Это не ретаргетинг, а умный контакт в нужный момент:
✅+30% к конверсии
✅ -35% к стоимости лида
✅ Доверие к бренду без раздражения
Оставьте заявку, и мы покажем, как работает нативный e-commerce в VEON Ads
#VEONAds#SmartAdvertising#ECommerceMarketing#ContextualAds
👋👋Всё о digital-рекламе в Узбекистане: аналитика, лайфхаки и готовые решения.
Поймайте момент, пока он ещё горяч 🔥
Пользователь:
💬 Чекнул баланс
👩⚕️ Записался к врачу
💳Оплатил счёт
Мы:
🍔 «20% скидка на бургеры»
🍣 «Суши-бар — бесплатная доставка до 18:00»
☕️ «Кофе с печенькой за полцены»
Почему это не просто реклама:
🎯 Ловим клиента в моменте (не спамим, когда не надо)
🎯 Предлагаем то, что реально актуально прямо сейчас
🎯Без навязчивости — как совет лучшего друга
Когда предложение — в нужный момент, результат такой:
— Конверсия в 3 раза выше обычной рекламы
— Средний чек +25% (потому что вовремя предложили)
Управляешь кафе, рестораном или отелем? Пора ловить не охват — а реальных клиентов.
Пиши — покажем, как⚡️
#VEONAds#SmartAdvertising#HoReCaMarketing#ContextualAds
👋👋Всё о digital-рекламе в Узбекистане: аналитика, лайфхаки и готовые решения.
⭐ Реклама в мессенджерах: Телеграм новая рекламная арена?
📱 Telegram это уже не просто чат. В Узбекистане он стал главным daily feed:
новости, покупки, комьюнити, мемы — всё в одном приложении. И да, бренды теперь тоже здесь.
👀 Чтобы проверить, насколько платформа вышла за рамки привычного мессенджера, мы проанализировали агрегированную статистику наших данных — делимся инсайтами:
👥 Приложение собирает более 4 млн активных пользователей ежемесячно — это примерно на 8% больше, чем у Instagram, и сопоставимо с Facebook.
📤 По частоте заходов, оно также лидирует: наши пользователи открывают его в 1,5–2 раза чаще, чем WhatsApp, и в 1,2 раза чаще, чем Instagram.
☝️ Разница не только в цифрах. Telegram действительно стал больше чем просто «чат», сегодня это и привычка общения, и поток контента.
Именно поэтому и реклама здесь появляется не «где-то в ленте», а там, где пользователь уже проводит своё время каждый день.
📩 Хотите узнать, как это меняет эффективность РК?
Расскажем в следующем посте👇
https://veonadtech.com/ru
#VEONAdTech#TelegramAds#DigitalMarketing#SmartAdvertising#MessagingApps#DataDriven
#MarketingInsights#AttentionEconomy
👋👋Всё о digital-рекламе в Узбекистане: аналитика, лайфхаки и готовые решения.
Когда вы на шаг впереди — вам не нужно кричать, чтобы вас заметили🤭
В VEON AdTech:
🏎 Никакой гонки за вниманием.
🎰 Никакой ставки на «повезёт — увидит».
🧐 Никаких «шумов» на фоне
Объявление появляется не поверх интерфейса,
а внутри маршрута пользователя:
✔️ интерес ✔️
✔️действие ✔️
✔️ решение✔️
💬 А вы хотите войти в момент, когда внимание не нужно завоёвывать — а достаточно просто быть на месте?
https://veonadtech.com/ru
#VEONAdTech#DigitalMarketing#AttentionEconomy#AdTech#SmartAdvertising#DataDriven#CustomerJourney#PerformanceMarketing#PrecisionTargeting
🚀 VEON Ads
Это развитая экосистема с умной логикой показа и прозрачной аналитикой.
Каждая интеграция усиливает не просто охват, а управляемость.
Вы знаете, кому, где и зачем показалось объявление.
📊 Реклама видима!
⚙️ Механика понятна!
👥 Поведение подтверждено!
Это и есть главное отличие:
VEON Ads — это не рынок рекламы.
Это система принятия верных решений.
https://veonadtech.com/ru
#VEONAds#VEONAdTech#DigitalMarketing#AdTech#SmartAdvertising#DataDriven#MarketingAnalytics#PerformanceMarketing#AttentionEconomy#CustomerJourney
📊Почему реклама в Telegram показывает другие цифры
📱 В прошлом посте мы рассказали: Telegram > мессенджер.
Следующий шаг — посмотреть, что это значит для брендов.
🪙 На основе наших запусков РК мы сравнили, как реклама в Telegram отрабатывает в цифрах — на фоне привычных digital-платформ.
Что показал анализ:
⬇️ Реклама в TG ещё непривычна → внимание выше, меньше «баннерной слепоты»
📤 Формат похож на обычное сообщение → доверия больше
📈 CTR в Telegram в 2–4 раза опередил привычные медийные форматы
📉 CPA оказался до 3 раз ниже среднего по рынку
🫴 Цена за лид в среднем была в 3–5 раз меньше.
⚡️ Эти результаты показывают: Telegram Ads эффективен не потому, что это «ещё один новый канал», а потому что реклама здесь привычна для поведения пользователя.
https://veonadtech.com/ru
#VEONAdTech#TelegramAds#AdTech#DigitalMarketing#SmartAdvertising#DataDriven#MarketingInsights#PerformanceMarketing#AttentionEconomy#CustomerEngagement
👋👋Всё о digital-рекламе в Узбекистане: аналитика, лайфхаки и готовые решения.