Установить свойства виджета в 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
erid: 2VtzqvJwM6J
Хобби стало делом всей моей жизни 🤩
Да, когда-то обычное хобби, где я делилась с подписчиками своими рецептами и советами по правильному и здоровому питанию, стали моей основной работой, которая приносит мне неплохой заработок 🫰
А ведь вы тоже можете получать прибыль и удовольствие от своего любимого занятия!
Рассказываю как и где найти партнеров - приложение Perfluence !
Все очень просто. Нужно зарегистрироваться в приложении по ссылке и ввести реферальный ключ 90CDD1.
Расскажу коротко про платформу:
— Приложение по рекламе у блогеров, которое на рынке уже 5 лет
— Есть возможность даже с маленьким аккаунтом (от 1500 подписчиков) начать сотрудничать с крупными и известными брендами, такими как Альфа-Банк, Hoff, РИВ ГОШ, есть различные проекты для России и СНГ
— Честный и официальный заработок без каких либо схем
— Компания полностью забирает на себя ответственность о маркировке вашей рекламы и передачу данных в ОРД
— Менеджеры 24/7 на связи и всегда помогают в работе. А самое приятное поддерживают в любой ситуации
— Если вы не сильны в теме маркетинга, то у платформы есть большой багаж знаний и материалов которые они собирают по крупицам и БЕСПЛАТНО поделятся с вами. А также разберут ваш аккаунт на предмет наличия ошибок и ваших сильных сторон
Переходите по ссылке, регистрируйтесь и пробуйте опубликовать ваш первый офер. Кстати, всем кто опубликует свой первый пост будет приятный гарантированный бонус* - 300р от меня!
Стань круче и успешнее с #perfluence😉
*Бонус начисляется при условии, что первая публикация была сделана в течение двух недель после регистрации
Реклама. ООО "ПЕРФЛЮЕНС", ИНН 7725380313.
🚀 Инфлюенс-маркетинг больше не угадывает. Он измеряет.
Perfluence — теперь в экосистеме VEON AdTech.
Мы не просто подключили технологичную платформу.
Мы встроили Perfomance-подход в саму суть инфлюенс-рекламы.
Инфлюенс-маркетинг больше не ограничивается охватом и доверием.
Теперь это — работающая воронка с измеримыми результатами.
🗣 Только живые блогеры с верифицированной аудиторией
🛒 Оплата — за действия: установка, регистрация, покупка
🔍 Полная прозрачность: кто кликнул, откуда и что сделал дальше
☝️ Это не просто интеграция.
Это новый стандарт инфлюенс-маркетинга в Узбекистане — точный, управляемый, эффективный.
❓ Готовы к рекламе, которая работает по вашим правилам?
В следующем посте расскажем — как мы находим именно вашу аудиторию.
#VEONAds#InfluencerMarketing#Perfluence#AdTech#DigitalAdvertising#MarketingInnovation
👋👋Всё о digital-рекламе в Узбекистане: аналитика, лайфхаки и готовые решения.
💵Новый стандарт инфлюенс-рекламы: оплата только за конверсию.
Инфлюенс-маркетинг уже в вашей стратегии, но не даёт чётких цифр?
С Perfluence вы платите только за реальные действия:
📱 Установка приложения
🪪 Регистрация пользователя
🛍 Совершение покупки
Как это работает:
1️⃣ Вы определяете цель кампании
2️⃣ Система подбирает блогеров с аудиторией, склонной к конверсиям
3️⃣ Контент публикуется и запускается отслеживание
4️⃣ Оплата — только по факту выполненного действия (CPA)
5️⃣ Все метрики — в едином кабинете
Что получаете:
Снижение нецелевых расходов 👇
Рост эффективности бюджета 📈
Полная прозрачность результатов
🌟
☝️ Это уже не просто инфлюенс.
Это performance-маркетинг в доверенной среде блогеров.
✉️ Хотите запустить кампанию с измеримым результатом уже на этой неделе?
Напишите нам — поможем настроить первую CPA-кампанию.
https://veonadtech.com/ru
#InfluencerMarketing#VEONAds#DataDrivenMarketing#Perfluence#DigitalMarketing#ROI#AudienceAnalytics
👋👋Всё о digital-рекламе в Узбекистане: аналитика, лайфхаки и готовые решения.
🎯Как найти блогера, который приведёт вам клиентов?
Охват, доверие, вовлечённость — всё это по-прежнему важно.
Но теперь к этому добавились цифры, действия и прозрачность.
🔬Блоггинг сейчас — это точная наука.
Perfluence анализирует не просто подписчиков, а их поведение:
• демографический профиль
• интересы и поведенческие паттерны
• уровень вовлечённости и активности
• историю взаимодействия с похожими продуктами
Пример: запускаете сервис доставки еды?
→ Мы подберём блогеров, чья аудитория:
👤 в возрасте 18–35 лет
🍕 интересуется food-tech, ресторанами, кулинарией
📲 регулярно взаимодействует с digital-услугами
📈 показывает высокую конверсию по смежным категориям
📥А как вы выбираете блогеров для запуска РК? Обсудим в комментариях?
https://veonadtech.com/ru
#InfluencerMarketing#VEONAds#DataDrivenMarketing#Perfluence#DigitalMarketing#ROI#AudienceAnalytics
👋👋Всё о digital-рекламе в Узбекистане: аналитика, лайфхаки и готовые решения.