Установить свойства виджета в 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
✈️Emirates открыли инновационный магазин путешествий в Лондоне
Крупнейшая международная авиакомпания Emirates представила новый экспериментальный магазин путешествий «Emirates World» в лондонском Кенсингтоне.
В магазине посетители могут окунуться в атмосферу полета Emirates, не покидая земли. Здесь представлены:
- Полноразмерная копия люкса первого класса
- Лаунж-зона A380 - то есть буквально воссоздана зона отдыха, доступная пассажирам на борту самолета
- Кресла премиум и эконом класса с возможностью протестировать сиденье перед покупкой билета
Кроме того, в магазине есть зона для селфи и сувенирная продукция Emirates
Также компания Emirates делает ставку на личное общение с клиентами:
- Семь стоек обслуживания, где можно забронировать полет с учетом самых тонких настроек
- Два экрана самообслуживания для тех, кто предпочитает самостоятельный поиск или не хочет стоять в очереди
Это не первый опыт Emirates в физической рознице на ниве создания центра клиентского опыта. Но в новой точке есть инноваций:
- Во-первых, для большей доступности салон теперь работает на 1 этаже
- В интерьер добавлены интерактивные элементы для привлечения посетителей
- В витринах установлены большие цифровые экраны с ярким логотипом компании для привлечения внимания прохожих и пассажиров ближайшей станции метро.
Emirates стремится создать более тесную связь с клиентами, предлагая им уникальный опыт, выходящий за рамки обычного онлайн-бронирования.
Источник GDR
#неунас#CX#emirates
🔮Гадаю на трендах, читаюкарту «Маг»отчет Acxiom про CX
Продолжаю марафон изучения тренд-отчетов и других аналитических предсказаний консалтинговых компаний на грядущий 2025 год.
Зачем? А мне покоя не дает «чисто исследовательское любопытство» (с) – какими еще оригинальными метафорами и броскими выражениями коллеги назовут одни и те же, повторяющиеся в каждом отчете, тенденции. У этих, кстати, есть крутой расклад про «фандом» и сообщества (в отчете - тренд № 2)
#трендомарафон2025#acxiom#CX
Изучить прогноз
☕️Кофейня для учебы: как Starbucks в Китае привлекает студентов
С начавшегося на днях учебного года в Поднебесной можно прийти в некоторые кофейни Starbucks чтобы поработать за компом, сделать домашку или подготовиться к экзаменам в отдельной тихой зоне с доступом к воде, розетке и Wi-Fi — и всё это БЕЗ покупок, тайм-слотов и даже без бронирования. Просто заходи, садись, делай свои дела, а покупать кофе или булочку — это по желанию.
На Weibo хэштег 星巴克推出自习室 собрал >38 миллионов просмотров — видимо, людям действительно не хватает таких атмосферных уголков для учёбы или удалёнки, где тебе не приходится каждые 40 минут вливать в себя очередной латте или покупать мафффин со скидкой.
То есть Starbucks как бы намекает, что заботится о сообществе, а не только о продажах кофе. Конечно, расчет на то, что многие всё равно что-нибудь купят, есть… но никто ж не настаивает.
Зачем им это?
PR. Ну… не только он один 🤗.
Starbucks запустил бесплатные study-зоны чтобы создать сообщество лояльных гостей.
В условиях бешеной конкуренции среди кофеен и массового роста coworking-форматов бренду важно стать местом, куда клиентам захочется возвращаться не только ради кофе, но и за ощущением заботы и поддержки.
Это — про стратегию долгосрочных отношений: даже если сегодня ты не купишь латте, завтра, когда понадобится поработать или встретиться по делам, то сразу вспомнишь про «Starbucks, в который можно зайти просто так, а дальше - решим».
В итоге бренд выигрывает не на продажах чизкейков, а на выгодах от формировании лояльности у гостей — главной валюте в современной HoReCa и ритейле.
P.S. Я, если что, не устаю удивляться «двойным стандартам» уважаемой кофейной корпорации из Сиэттла. В Лондоне и Берлине у них, пардон, в туалет только по специальному коду зайти можно, а в КНР в условиях бешеной конкуренции они зовут клиентов посидеть в кофейне «просто так» 😆
#неунас#HoReCa#starbucks#CX#лояльность