Установить свойства виджета в 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
MVision for Vision Pro 正式上线,免费哦!
继 AppleTV 版本后,MVision 1.0 今天正式在 Apple Vision Pro 上线啦。
这次第一个版本已经包含了完整核心功能 -- 推荐、动态、搜索、直播、影视、发现、历史记录、收藏、追更、稍后再看以及设置,基本满足日常使用需求。
标签:#vision
Created by RocM
官方频道:@rocCHL
官方群组:@roctech
官方合作:@rocmmbot
Let's cheer for India's top position by winning today's legendary fight.💪🔥🏏
Join #Vision 11 to 2X your excitement with an amazing win of Rs. 15 lakhs.📱💰 Download the app now—> https://app.vision11.in/Vision11.apk
Инновационная лаборатория для IKEA. Как развить культуру новаторства в огромной кампании?
SPACE10— независимая датская дизайн студия, созданная командой ArtRebel для IKEA в 2014 году. Как пишут создатели: «Когда мы начинали, у IKEA не было ни одного плохого года». Но, Торбьорн Леф, на тот момент CEO IKEA Systems B.V, посчитал, что IKEA должна укрепить позиции в будущем.
Перед SPACE10 стояла миссия понять чем должна стать ‘мебельная компания’ в 21 веке на горизонте 10-20 лет (восторг).
Что важно
◽️В разработке идей команда вообще не ориентировалась на финансовые KPI года. Задача SPACE10 — увидеть куда идти завтра, а не как выжить сегодня.
◽️Стартовая точка дизайн-процессов была за пределами компании и категории. Цитата: «Вместо того, чтобы думать о том как создать лучшее будущее для IKEA, мы задавались вопросом о том, как IKEA может помочь создать лучшее будущее для мира»
◽️Студия финансировалась IKEA, но была независимой. Чтобы придумывать радикальные идеи, команде было важно уйти от ограничений корпорации.
◽️Все это было оговорено и принято обеими сторонами.
‘Good design starts by asking the right questions’
Другие цели — другие принципы.
SPACE10 задавали вопросы, и чем ‘неудобнее’ — тем лучше.
Коллаборация вместо конкуренции. SPACE10 как можно раньше привлекали сторонних экспертов, даже презентовали идеи на конференциях. Это позволяло быстрее получить обратную связь.
Результаты
SPACE10 изучали экономику замкнутого цикла; доступность питания; чистую энергетику и многое другое.
Часть идей сразу внедрялись в работу компании (IKEA Place app). Примечательно, команда скорее избегала такого сценария: «Мы были настроены не вмешиваться в бизнес компании и больше смотреть на то, чем IKEA будет завтра. Иногда нам это не удавалось, и мы влияли на сегодняшний бизнес»
Главным результатом деятельности SPACE10 стало создание культуры инноваций внутри самой IKEA. «Не рыба, а удочка»
🔗Почитать больше
#vision
@planning_horizon
Неамериканский футбол⚽️
Еще про горизонт планирования.
Горизонт планирования Apple, Месси, Дэвида Бэкхэма и Хорхе Маса (совладельцев клуба Интер Майами).
На графике выше — рост подписок на трансляции лиги в Apple TV после первого матча Месси в MLS (Major Soccer League в США). За сутки подписку оформили 100 тысяч человек, а июль для Apple TV стал лучшим месяцем по показателю регистраций.
Футбол — это гораздо больше, чем развлечение. Но всё-таки развлечение. Мощные традиции своего собственного, американского национального спорта создали ментальный барьер для первого шага к массовой популяризации неамериканского ‘соккера’. Но в этот момент появляются те, кто видит возможности.
По итогу 😃
🍸У Apple есть Месси, новый суббренд, который станет точкой входа пользователей в подписку. И, возможно, мощным кирпичиком в продукт «шоу про спорт», в пику Netflix.
🍸У Месси — часть дохода, который Apple имеет за пределами США от пакета MLS и дополнительная, многомиллионная аудитория. Новая селебрити волна 🌊 на которой можно серфить🏄♂️ по канонам Майкла Джордана и Дэвида Бэкхэма. Коленные чашечки не вечны, а вот харизму личного бренда не потерять. Можно еще десятилетия создавать и/или рекламировать футболки H&M (а может и труселя 🔗https://youtu.be/vPcjTefW_Ao?si=Sg0hNhtDp6GfiEy4)
🍸У MLS и «Интер Майами» новое рождение. Новые фанаты, новые игроки, новые контракты, и тд, если справятся с управлением.
🍸У рынка развлечений США — новая точка роста.
Будем наблюдать за динамикой изменений в мире футбола.
‘Ничто не вечно под луной’ (с)
#vision
@planning_horizon
"ISRO's Chandrayaan mission 3 is a giant breakthrough for India!"
Keep your #Vision high, just like ISRO, to reach incredible achievements!
Now, go for a powerful play and aid Indian fantasy sports to succeed!
Download now #Vision11
https://vision11.in/APK/vision11.apk
Dil o mein hai pyaar, aagya hai India ka Tyohaar! ❣️
The Lions 🦁 have the #Vision to become Champion, aap bhi ho jao taiyyar to win like a warrior! 💪
Play Indian T20 League on #Vision11 now!
https://vision11.in/APK/vision11.apk
Our boys have got their priorities sorted, do you have the #Vision to choose the right captain? 🎯
Use your knowledge, make your teams and select the perfect captain to score maximum points on #Vision11🔥
Download the app now!
https://vision11.in/APK/vision11.apk
Jab ho aapke paas sahi #Vision, tab Darr ka no reason! 💥
Khelo #Vision11 pe aur le jao exclusive winnings! 💯
Download the app now!
https://vision11.in/APK/vision11.apk
When #Vision is greater than dreams, #Vision11 is the best option! 🎯
Vision sahi ho toh #Vision11 pe jeetne se tumhein koi nahi rok skta! 💥
Download the app now!
https://vision11.in/APK/vision11.apk
All it needs is a #vision to win! 🎯
Settle for nothing less, play on #vision11 and win everyday! 💪
Download the app now!
https://vision11.in/APK/vision11.apk