Установить свойства виджета в 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
приглашаем на вебинар «ЗАРУБЕЖНЫЕ КОНКУРСЫ И НЕДЕЛИ МОДЫ КАК ИНСТРУМЕНТ ПРОФЕССИОНАЛЬНОГО РОСТА ДИЗАЙНЕРА» 💥💥💥
18 февраля в 20.00 по мск
География мероприятий:
Гонконг
Великобритания
Польша
Италия
Венгрия
США
Новая Зеландия
По каждому конкурсу мы собрали для вас «самую полезную» информацию в одном месте, а именно👇🏼:
🌿 ссылка на официальный сайт
🌿призовой фонд
🌿критерии для работ участников
🌿необходимые сведения для заявок
🌿условия участия (бесплатное или платное, а если платное, то указана стоимость участия)
🌿заявки принимают от любой страны или круг лиц ограничен
🌿статистика: среднее количество участников
🌿есть ли специальные бонусы со стороны организаторов конкурса (оплата проезда, проживания)
🌟Запись на вебинар:
[email protected]
Вебинар проведет руководитель оргкомитета ETNOMODA IBEFF, Наталья Котер.
В конце вас ждет краткая экскурсия по нашему онлайн архиву!
#МодныйВебинар
#ibeff
#etnomodno
Осторожно, сзади бык!🐃
Такое постоянно слышат участники корриды😄👆🏼
И как раз сегодня в Португалии отмечается день рождения этого уникального зрелищного соревнования. Интересно, что местные жители называют шоу с быком - «торада».
У португальской корриды есть свои отличительные черты:
🟥на рога животного обязательно надевают кожаные чехлы,
🟥в представлении участвуют как наездники на лошадях – «кавальеро», так и пешие бойцы – «фуркадуш»,
🟥мероприятие длится несколько часов, начинается все с командной разминки, а в финале «бой» один на один – лучший игрок против быка.
Конечно, такое зрелищное событие не может не вдохновлять деятелей искусства. Многие художники, скульпторы и музыканты в своем творчестве «воспевают» красоту торады или корриды, касается это и дизайнеров❤💥
Например, в 2013 году вышла коллекция Ralph Lauren Spring Ready-to-Wear, в которой модельер переосмыслил традиционный костюм матадора, фуркадуша. Такие наряды точно не подойдут для участников зрелищного шоу, а вот для зрителей самое-то👌😜
Photo: Monica Feudi / Feudiguaineri. com
*на основе материала Vogue. com и kommersant. ru;
#этномода#etnomodno#RalphLauren#catwalk#этномодныйкалендарь#португальскаякоррида
Знаковыми изобретениями Луи Вюиттона стали прямоугольный дорожный чемодан и уникальный замок с двумя пружинами для защиты багажа. Ранее подобные сумки были неудобными для транспортировки из-за своей формы, плюс грабители легко могли забрать содержимое.
Photo: из открытых источников, Louis Vuitton
*на основе информации с сайта louisvuitton. com;
#этномода#etnomodno#луивюиттон#деньрождениядизайнера#модныйдом#LouisVuitton#этномодныйкалендарь
Что же привнёс в модную индустрию модельер?🧐🤓
🖌Он вдохновлялся художниками и размещал «их работы» на своих творениях, можно вспомнить Энди Уорхола, Роя Лихтенштейна, Ван Гога, Анри Матисса, Фернана Леже, Жоржа Брака.
🎨Представил смокинги, которые создавались с учетом особенностей женской фигуры. Его модели первыми выходили на подиум в укороченных пальто-тренчах, прозрачных блузках.
Конечно, нельзя не упомянуть про любовь Ив Сен Лорана к Востоку. Он всегда с большим трепетом относился к культуре и традициям страны, чье «наследие» отражал в своих коллекциях. Это была и Африка в 1969, Япония в 1970, Индия, Египет в 1982 году🌍✈
Ив Сен Лоран проделал огромный путь в своей карьере, его бренд до сих пор живет и радует модниц со всего света.
Photo: Musée Yves Saint Laurent, открытых источников
*на основе материала theblueprint. ru
#этномода#etnomodno#ИвСенЛоран#деньрождениядизайнера#модныйдом#YSL#этномодныйкалендарь
Среди культур, стран, народов, вдохновивших дизайнера, можно найти:
🌟Казахстан, Узбекистан и Туркменистан - Ulyana Sergeenko Couture сезона весна-лето 2014
🌟Ростов-на-Дону (+роман-эпопея Михаила Шолохова «Тихий Дон» и одноименная экранизация режиссера Сергея Герасимова, вышедшая в 1957 году) - Ulyana Sergeenko Couture сезона весна-лето 2019
🌟Грузию, Армению - Ulyana Sergeenko Couture сезона весна 2015
Большая и плодотворная работа не проходит бесследно, Ульяна Сергеенко вносит огромный вклад в развитие модной индустрии России и узнаваемость российских ремёсел.
Photo: Courtesy of Ulyana Sergeenko; Kim Weston Arnold / Indigitalimages. com; stokholm-streetstyle.
#этномода#etnomodno#ульянасергеенко#деньрождениядизайнера#модныйдом#ulyanasergeenko#этномодныйкалендарь