Установить свойства виджета в 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
Моника Белуччи, Ума Турман, Матильда де Анджелис, Валерия Голино, режиссер Аличе Рорвахер на показе Fendi
Сейчас все итальянские кинокрасотки на Неделе моды в Милане. Она идет до 2 марта смотреть показы ТУТ
#mfw
Пока fashion-индустрия занята подиумами, в городе крутят кино и проходят выставки, погружающие в мир стиля, образов и визуального повествования
📍Triennale Milano
📅До 16 марта 2025
🎥«Il Nostro Tempo» – серия кинопоказов и инсталляций, где 12 режиссёров исследуют настоящее через призму кино. От Аньес Варда до Ван Бина
– отражение времени в каждом кадре
📍Triennale Milano
📅2 марта – 18:30
🎬«Miracolo a Milano» – фантастическая сказка Витторио Де Сики о мире, где чудеса случаются, а доброе утро действительно доброе. Легендарный фильм, вдохновивший Спилберга
🎟 Вход: свободный (по регистрации)
📍Palazzo Reale
🗓До июня 2025
🎨“Io sono Leonor Fini” – монографическая выставка художницы, чьи образы балансируют между сюрреализмом и декадансом. В её мире реальность растворяется в снах, а женская сила обретает магическую природу
📍Palazzo Morando
🗓Открыта сейчас
👠“Cristóbal Balenciaga, Shoes from Spain Tribute” – выставка, посвящённая культовому кутюрье. Баленсиага – не просто дизайнер, а режиссёр силуэтов, работавший с тканью так, как кинематографисты работают со светом и тенью
📍Mudec
🗓С 21 февраля 2025
📷“The Creation of a Diva” – фотографическая выставка, исследующая процесс создания иконического образа. Сплав моды, кино и визуального искусства
#MFW
Пока гости занимали свои места, за кулисами происходило главное.
Финальная примерка модели за пять минут до выхода. Тихое "всё сидит идеально". Последний взгляд в зеркало — и на подиум.
Просто работа нашей команды, которая знает своё дело.
Бекстейдж — это где настоящая магия 🖤
#MFW#HouseOfLeo@mosfweek
Мы показали новую главу бренда на Московской неделе моды. @mosfweek
Но главное событие того дня — не подиум и не свет софитов, а вы. Наши гости. Те, кто поддерживает House of Leo с первого дня и те, кто открыл нас только сейчас.
Спасибо, что были с нами в зале. Спасибо за ваш вкус, внимание и энергию. Именно ради этого мы продолжаем делать мужскую одежду, в которую хочется одеваться.
До новых встреч 🖤
#MFW#HouseOfLeo
House of Leo на #MFW
Вот уже месяц назад мы сделали наш показ на Московской неделе моды @mosfweek
Вспоминаем как событие, которое подтвердило: мужская одежда с характером — это про нас.
Хотели бы такой же стиль? Ставьте 🔥
#MFW#HouseOfLeo
Детали коллекции для показа в рамках Moscow Fashion Week 2025.
Художественные приемы, которые использованы в коллекции, — это множество принтов, выполненных на крое перед пошивом. Также использован новый необычный прием «дерти вышивки» по принту, включающий в себя многочисленные зигзагообразные строчки, которые могут приобретать форму кругов или абстрактных фигур.
Модели трикотажа в коллекции тонкие, текучие и крученые, соединяются не только строчками, но и связаны узлами. Трикотажные блузы были выполнены на манекене и являются уникальными неповторимыми объектами.
1 сентября ждем вас на показе.
#московскаянеделямоды
#MoscowFashionWeek
#MFW
B2BASEAN посетил Неделю моды в Москве для укрепления сотрудничества в индустрии моды
B2BASEAN принял участие в Неделе моды в Москве, изучая возможности сотрудничества в сфере моды, текстиля и креативных индустрий. Визит был направлен на установление связей между бизнесом стран АСЕАН и российскими партнерами, развитие торговых отношений и продвижение региональных брендов на международном рынке.
В рамках мероприятия представители B2BASEAN встретились с дизайнерами, производителями и лидерами индустрии, обсудив перспективы партнерства, поставок и культурного обмена. Также были рассмотрены пути укрепления сотрудничества между АСЕАН и Россией в области моды, устойчивого производства и инвестиций.
Этот визит является частью более широкой стратегии
B2BASEAN по развитию бизнес-связей между АСЕАН и Россией
через
участие в выставках, форумах и деловых встречах
.
@b2basean
#Мода#mfw#moscowfashionweek#ASEAN