Установить свойства виджета в 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
Раскадровка Flamenco
Как всегда, вы можете увидеть, насколько буквально реализуется раскадровка. На этом проекте она корректировалась уже после того, как мы прилетели в Кейптаун и провели скаут. Чтобы на площадку выйти с максимально точным документом, по которому планируется время и выстраивается съемочный процесс.
#реклама#flamenco
В уста одного из героев Левши я вложил слова, многократно подтвержденные личным жизненным опытом: “Порой все самое занимательное случается вне всякого разумного плана и билет, от которого вы ничего не ждете, может перевернуть всю жизнь вверх дном.” Так билет в Кейптаун перевернул мою.
Сегодня я расскажу про один из самых любимых и значимых для меня рекламных проектов - ролик для бренда томатов Flamenco.
От этого проекта я отказывался 4(!) раза, в силу разных причин. Но в итоге все каким-то невероятным образом сложилось так, что мы полетели в ЮАР. Во многом благодаря настойчивости продюсера Маши Коробовой и директору по маркетингу компании РОСТ Василию Солянику, который точно знал, что ему нужно и определил, с кем и где он хочет снимать. Очень благодарен коллегам.
Ролик получил престижные индустриальные награды и оказался настолько успешным и эффективным, что выходит в эфир уже 3-й год, повышая продажи.
Для меня проект в тот год стал и профессиональным и личным откровением. Позже, уже после съемок я подбивал итоги и поверить не мог, как много принесло то, от чего я бежал.
Я мечтал поснимать на Panavision, потрясающие анаморфотные объективы, на которые снята почти вся киноклассика, я это сделал. Впервые поработал с международной группой. Получил супер буст к изучению языка, нашел местного преподавателя. Приобрел всесторонний опыт в профессии. Попробовал множество новых фишек и провел эксперименты с изображением. Не знаю, кто еще снимал фуд на Panavision) Знакомство и первая работа с оператором Женей Козловым оказала на меня очень сильное влияние - Женя человек мира, художник, который работает по всему свету и его взгляды на жизнь и профессию заставили и меня в чем-то измениться. Мы прекрасно потрудились. И позже, получив лестные отзывы о нашей работе от местных продюсеров, поменяли билеты и остались изучить рынок Кейптауна и познакомиться с продакшнами. Я открыл для себя новую страну, Африка стала настоящим местом силы. Меня так зарядил и вдохновил Кейптаун, что я непременно захотел разделить эти эмоции с моей девушкой, с которой мы были пять лет вместе, а я все не решался на важный шаг; а тут понял, что пора, купил ей билеты и когда она прилетела, сделал ей предложение. И теперь, если спросить нас, куда бы вы хотели полететь, первое, что мы скажем - Кейптаун.
Бонусов от проекта столько, что устанешь перечислять. А вы еще спрашиваете, зачем ты снимаешь рекламу?) С тех пор я стал еще более открытым к самым авантюрным и странным предложениям, потому что знаю, что помимо профессиональных задач, которые мне очень интересно решать, жизнь может преподнести тебе совершенно неожиданные подарки. А это и есть тот самый личный опыт, который потом ты используешь, чтобы рассказывать впечатляющие и достоверные истории в кино.
Впереди материалы бэкстейджа и подробный разбор этого кейса.
#реклама#flamenco
La Banda Moriscorum — Gitana Mora (Self-released, 2020)
#traditional#flamenco#andalusian#Spain
Gitana Mora, третий альбом андалузского секстета La Banda Moriscorum, основан на традициях Аль-Андалуз, «мусульманской Испании», территории Пиренейского полуострова, находившейся под мусульманским владычеством с 711 по 1492 год. Вслед за группой Radio Tarifa, Gitana Mora смешивают в своем творчестве фламенко, арабо-андалузскую и арабскую музыку, подчеркивая арабское влияние, пронизывающее испанскую культуру.
🔗Spotify | AppleMusic
Various Artists — My Greatest Revenge: Flamenco Recordings, 1904-1938 (Death Is Not The End, 2024)
#traditional#field_recording#gypsy#flamenco#Spain
Коллекция ранних записей cante jondo («глубокой песни») — основополагающего стиля андалузского фламенко. Cante jondo выделяется своим эмоциональным, проникновенным вокалом и сложным гитарным аккомпанементом.
Фламенко зародилось в фольклорных традициях Андалусии и было сформировано усилиями преимущественно цыган, превратившись в самостоятельное музыкальное явление уже к XVIII веку.
Сборник включает одни из первых записей фламенко, сделанных в начале XX века. Среди исполнителей — El Mochuelo, La Andalucita, Niño de Cabra и Juan Breva, чьи выступления передают меланхоличную и задумчивую атмосферу жанра, несмотря на низкое качество записи, обусловленное техническими ограничениями того времени.
🔗Bandcamp | Telegram
Aziz Balouch — Sufi Hispano-Pakistani (Death Is Not The End, 2025)
#field_recording#flamenco#sufi#Pakistan#Spain
Азиз Балуч родился в Синде в 1909 году. С детства он был связан с суфийской традицией, изучал персидскую и арабскую поэзию, а также духовное пение. Однажды он услышал записи фламенко и настолько был ими очарован, что в 1932 году переехал в Испанию. Там он познакомился со знаменитым певцом Пепе Марчена, выступал с ним и получил прозвище «Marchenita», «маленький Марчена».
Но Балуч не просто исполнял музыку, а еще и увлеченно исследовал её. Он выдвинул теорию, согласно которой фламенко имеет южноазиатское суфийское происхождение. В своей книгеSpanish Cante Jondo and Its Origin in Sindhi Music Азиз приводит несколько примеров параллелей между формами двух музыкальных традиций. Например, с его точки зрения, saeta, звучащая в Андалусии во время Страстной недели, имеет много пересечений с marthiyyas, исполняемой в Пакистане в память о мученической смерти имама Хусейна.
Хотя теория Азиза Балуча не получила окончательного подтверждения, его книга стала одним из первых подобных исследований, связывающих современное фламенко с его исламским прошлым.
За десятилетия до появления этномузыкологии Азиз Балуч погрузился в совершенно иную музыкальную культуру, найдя в ней вдохновение для создания своего стиля исполнения, который, к сожалению, остался скрытым и незамеченным. 8 треков с альбома Sufi Hispano-Pakistani взяты с двух сохранившихся 7-дюймовых пластинок Азиза, выпущенных в Испании в 1962 году. На них он непринужденно объединяет суфийскую поэзию на персидском, синдхи, хинди и арабском языках с различными формами андалузского фламенко, убедительно демонстрируя, что обе культуры берут начало из одного корня.
В 2020 году на Death Is Not The End выходил сборник работ Азиза из 4 треков, а это — его расширенная версия из 8 композиций. Старый релиз доступен на Spotify и AppleMusic. Новый — еще не доехал.
🔗Bandcamp | Telegram
Rüstəm Quliyev — Azerbaijani Gitara (Bongo Joe, 2020)
#mugham#psychedelic#bollywood#flamenco#Azerbaijan
Рустем Гулиев родился в 1969 году в селе Косалар, Нагорный Карабах. В детстве он освоил тар и саз, а с гитарой впервые столкнулся во время службы в армии и быстро стал известным гитаристом. В начале 90-х он покинул свой дом из-за конфликта в Карабахе и поселился в столице Азербайджана. Там он играл на свадьбах и телевидении, записал множество кассет. Стиль Рустема считал в себе музыку Азербайджана, фламенко, мелодии Болливуда, Афганистана и Ирана. Он создал уникальный звук в рамках без того своеобразной азербайджанской «электрогитарной» музыки. К сожалению, его карьера оборвалась в 2005 году после борьбы с раком легких. Однако его музыка продолжает оставаться популярной по всей стране. Azerbaijani Gitara — сборник записей Рустема, сделанных с 1998 по 2004 год. Он собран швейцарским лейблом Bongo Joe, семьей Рустема и грузинским лейблом Moutains of Tongues.
🔗Spotify | AppleMusic | Bandcamp