Установить свойства виджета в 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
Это чистая роскошь и абсолютная ЛЮБОВЬ!❤️
Новые матовые помады PUPA Milano Моя любовь/My crush - ну до чего хороши!😍
С абсолютно удивительной, суперсовременной формулой: яркие пигменты, смягчающие масла и такие нежные губы, как шелк!
Никакой сухости, никаких трещинок, никакого дискомфорта! Только нежность, мягкость и очарование
И оцените красоту футляра - квинтэссенция женственности и изящества.
Какой оттенок из видео вам понравился больше всего?
В видео я перекрасила губы 8 раз, и даже после этого они в отличном состоянии, как будто лучше, чем были до🙀
А найти такую красоту можно на OZON и на WILDBERRIES
Попробуйте - они роскошны!
#pupamilano
*реклама
Любовь с первого взгляда или с первого прикосновения
невероятная новинка от @pupamilanorussia , матовая помада PUPA Milano МОЯ ЛЮБОВЬ/MY CRUSH
честно первый раз встречаю настолько мягкую и бархатистую текстуру , финиш матовый но при этом она вообще не ощущается на губах , не подчеркивает шелушения , я в шоке !
+ очень необычный и женственный дизайн , в форме кушона (упаковка мягкая , силиконовая)
восемь просто потрясающих оттенков и насыщенный цвет с первого нанесения
Купить можно на OZON и WB
мои фавориты 011,012 , а какой оттенок вам приглянулся ?
#pupamilano
Pupa Milano, ну что за роскошь такая - вы только посмотрите на эту новую лимитированную коллекцию Penny Black🖤
Для меня как для фаната палеток и хайлайтеров это просто в самое сердечко. А эта упаковка! В коллекции палка теней, хайлайтерв и 2 оттенка помад (на фото у меня одна - вторую покажу чуть позже уже в свотчах - она более розовая). Честно скажу - эти шикарные продукты даже жалко свотчить - хочется смотреть на них и вздыхать от восхищения.
#pupamilano
Ой девочки! Смотрите какая милота❤️
Обожаю находки, которые сразу создают настроение – и эти бархатные косметички от Pupa Milano именно такие: стильные, уютные и идеально зимние.
Внутри — бестселлеры бренда: культовая тушь Vamp!, а также карандаши и подводки, блески для губ, средства для снятия макияжа и милые аксессуары — всё, чтобы собрать идеальный макияж.
А еще сами оттенки косметичек😍
Ну сами посмотрите, как это стильно смотрится.
Такое не грех себе любимой и подругам подарить.
#PupaMilano
Девочки, отличная новинка от PUPA Milano – Wonder Me Defender.
Это тональный бальзам с SPF 50, невесомым покрытием и уходом в одном флаконе в формате компактной пудры.
Какие плюсы у средства я выявила:
1️⃣Максимальная защита от солнца без белого налета.
2️⃣Легкий, естественный финиш, а плотность нанесения можно варьировать наслоиванием.
3️⃣в составе 93% натуральных ингредиентов: каолин, масло ши и экстракт Понгамии для ухода.
4️⃣Хорошая стойкость, жирный блеск не проявляется больше 5 часов🤌🏻
Идеален для любого типа кожи и поможет быстро освежит макияж в течение дня.
Красота и забота вместе, 2в1❤️
В линейке 4 тона, мне отлично подошел 02, с более холодным подтоном.
#PUPAMilano
Обещала вам распаковку шикарной рассылки от Pupa Milano ❤️
Рассылка посвящена запуску двойных фломастеров для губ Vamp! Marker duo - это роскошное комбо - маркеры + блески для губ в супер трендовых оттенках.
Кстати неплохая идея - когда не можешь выбрать оттенок - предоставить этот самый выбор вселенной💫
#pupamilano#макияж
Вот такие конфетки выпустили любимые Pupa Milano❤️🔥
Это новые пламперы для губ. Обязательно покажу вам свотчи - цвета очень красивые и при этом они прилично увеличивают губы 💋
Важно - как и все пламперы дающие явно видимый эффект увеличения, продут воздержитесь в себе сильные активы - в данном случае это ментол❄️, чили 🌶️ и специальный актив maxi-lip. Поэтому перед тем как нанести продукт на губы протестируйте его на руке - наносим полосочку, ждём, стираем и ждём. Если реакция терпимая, то можно использоваться.
Эффект они дают невероятно красивый, но если у вас чувствительная кожа и склонность к дерматитам, то лучше выбрать другие блески от Бренда - благо ассортимент роскошных текстур и трендовых оттенков огромный.
Свотчи обязательно покажу чуть позже✨
#pupamilano#макияж
Нас вчера занесло снегом, поэтому радую себя весенней коллекцией Color Trip от Pupa Milano🤍
У меня на тесте масла и бальзамы для губ (кстати, мой вам совет - увидите в магазинах - хватайте про запас - у бренда в лимитах просто топовые средства для губ. А вот эти малышки-масла ничем не уступают знаменитым маслам от кларанс).
Румяна в стике покажу вам отдельно - это топ🔝 В самом стике продукт светлый, а проявляется он при нанесении - это нужно видеть.
Также в моем наборе хайлайтер с влажным сиянием и масло для ногтей. Все продукты покажу в действии❤️
#pupamilano#макияж
Роскошная зимняя лимитка Night Heroes от Pupa Milano.
В моем наборе:
🟣Жидкий хайлайтер с деликатным сиянием и влажным финишем. Идеален, чтобы красиво подчеркнуть ключицы или другие открытые зоны в новогоднем наряде;
🟣Компактный сухой хайлайтер с мельчайшим золотистым финишем для макияжа лица;
🟣Запеченые сияющие румяна - очень красивое сочетание бронзового и розового в запаянной текстуре - в макияже дают легкое сияние и придают правильный объем щечкам;
🟣Ухаживающее масло для губ с мельчайшими сияющими частицами. Абсолютно нелипкая, шелковистая текстура нежно обволакивает и придает губам деликатный блеск и дополнительный объем за счет сияющих частичек. Вангую - его сметут одним из первых - рекомендую запастись.
🟣2 в одном - помада-бальзам + стойкий карандаш для губ. Идеальный нюд - еще один кандидат на sold out. Прекрасный компаньон для вечернего smoky eyes с правильным подтоном, который не уходит ни в розовый, не в рыжи, ни в серый. Просто идеальный беж.
🟣Палетка сияющих оттенков теней - как всегда у пупа тени мягкие, жирненький, не пылят и отлично отдают цвет✨
Вот такая коллекция, как вам?✨
#pupamilano#макияж
Вот так выглядит тушь Vamp! lash Extender от Pupa Milano❤️
Давно хотела вам показать - откуда берутся ресницы - да меня загадка - мне кажется их у меня не так и много. Тушь создает какой-то невероятный объем и длину. Мне еще нравится красить ресницы смещая щеточку к внешнему уголку глаза. Получается очень крутой эффект. Как вам?🤗
#макияж#pupamilano