Установить свойства виджета в 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
Anatol Stefanet — Moldavie: L'art du bratsch, Vol. 2 (Buda Records, 1997)
#traditional#balkan#viola#Moldova
Анатол Штефанет — руководитель группы Trigon, композитор, заслуженный артист Республики Молдова, член Союза румынских кинематографистов и арт-директор Этно-джазового фестиваля в Молдове. На этом альбоме Анатола собрана традиционная молдавская музыка. Сам Анатол выступает в роли исполнителя на альте. Альбом входит в серию Musique Du Monde французского лейбла Buda Records.
🔗Spotify | AppleMusic
Balkan Taksim — Disko Telegraf (Buda Musique, 2021)
#taksim#balkan#electronic#psychedelic#Romania
Balkan Taksim — проект Сана-Ливиу Стояновичи, музыканта и коллекционера народной музыки из Бухареста, и Алина Забрэуцяну, известного продюсера электронной музыки. Disko Telegraf — их долгожданный полноформатник. Сана проводил много времени, путешествуя и исследуя музыку и культуру Балкан, собирая мелодии, рассказы и инструменты. Звуки саза, нея и дарбуки наряду с традиционными мелодиями и историями, которые он собрал, использовались в качестве основы для новых композиций. Совместив традиционное наследие со знаниями Алина в области электроники, у Balkan Taksim получилась на редкость удачная ориентальная электронная музыка.
Spotify | AppleMusic
Alexandre Desplat — The Grand Budapest Hotel (ABKCO, 2014)
#baroque#classicism#traditional#balkan#soundtrack#Russia#France
Саундтрек Александра Деспла к фильму Уэса Андерсона «Отель „Гранд Будапешт“», созданному по мотивам рассказов Стефана Цвейга. Помимо того, что он содержит массу отсылок к григорианским хоралам, музыке эпохи борокко и классицизма, в нем очень широко представлена балканская музыка и музыка восточной Европы, а финальную композицию исполняет Оркестр народных инструментов имени Н. П. Осипова. Действие фильма разворачивается в вымышленной восточноевропейской стране Зубровке, в период между двумя мировыми войнами, и представляет собой аллегорию общественной и политической жизни восточной Европы первой половины 20 века. Очевидно, масштаб задумки Андерсона произвел впечатление на Деспла: он проделал титаническую работу для того, чтобы создать свою интерпретацию музыки того времени и тех мест.
Spotify | AppleMusic
Jovan Radivojev — Just Like That: Serbian Gajdaš (Canary Records, 2024)
#traditional#serbian#bagpipe#gadja#balkan#Serbia
В начале XX века, из-за того, что население США на 14% состояло из иммигрантов, крупные американские звукозаписывающие компании, такие как Columbia и Victor, начали выпускать пластинки на иностранных языках. К 1913 году Columbia выпустила тысячи таких записей, зафиксировав таким образом языковое и культурное разнообразие США того времени.
Этот альбом включает композиции с двух редких пластинок сербского народного певца Йована Радивоева, выпущенных Columbia Records в 1913 году. На них Радивоев исполняет традиционные сербские песни под аккомпанемент гайда (гајде) — балканской волынки, традиционного инструмента пастухов и участников обрядов.
Многие подобные записи с сербской народной музыкой утрачены из-за исторических потрясений, произошедших в Европе, включая две мировые войны. Однако эти записи сохранились благодаря тому, что были выпущены в США. Они дают редкое представление о жизни и музыкальной культуре сербских иммигрантов в начале XX века.
🔗Bandcamp
Gypsy Ska Orquesta — Sabarabulé (2020)
#ska#reggae#balkan#cumbia#swing#gypsy#jazz#Venezuela
Gypsy Ska Orquesta родилась на улицах Каракаса, Венесуэла. Музыка группы представляет собой необычное сочетание ска, кумбии, свинга и цыганской музыки Балканского полуострова. Их последний студийный альбом Sabarabulé был записан и спродюсирован Альберто Переса в Барселоне осенью 2019 года. На композиции Mandibuleo отметилась немецкая кларнетистка Фридерика фон Оппельн-Брониковски из группы Herje Mine, исполняющей балканскую музыку.
Spotify | AppleMusic | Bandcamp
Various Artists — Crowing at Night: Macedonian Traditional Dances & Songs from Radio Skopje ca. 1949-50 (Canary Records, 2024)
#traditional#balkan#bulgarian#macedonian#zurla#tapani#North_Macedonia
Этот альбом посвящен македонской традиционной музыке, записанной для Радио Скопье в 1949–1950 годах. В сборнике представлены композиции в стиле македонской городской песни «чалгия» (чалгија), а также записи флейты зурлы и барабана тапани — традиционных инструментов, генетически связанных с османскими зурной и давулом. Записи были сделаны в Скопье, а затем изданы в США благодаря усилиям македонского эмигранта Спирри Бога, основателя лейбла Sperry.
Спирри Бог, урожденный Спиро Богойевич, эмигрировал в США в 1923 году, а в 1950 году во время поездки на родину получил доступ к архиву Радио Скопье. Вернувшись в Детройт, он обработал записи и выпустил их на собственном лейбле Sperry. Записи стали очень популярны среди македонской диаспоры Детроита.
Помимо Спирри Бога, в середине прошлого века изданием македонской музыки занимался нью-йоркский лейбл Newtone. Примерно в то же время, что и Бог, лейбл выпустил несколько записей, сделанных на той же радиостанции в Скопье.
В итоге, в этом сборнике представлено 15 восстановленных композиций, среди которых преимущественно те, которые Спирри Бог вывез из Македонии, а также два трека (14-ый и 15-ый), выпущенных лейблом Newtone. Эти записи дают уникальную возможность взглянуть на музыкальное наследие Македонии в том виде, в котором оно было представлено в середине XX века.
🔗Bandcamp
Olivier Daviaud — Le Chat Du Rabbin (Naive, 2011)
#klezmer#balkan#jew#arab#Algeria#France#Netherlands#Ukraine
Саундтрек к французскому анимационному фильм «Кот раввина» по мотивам комиксов Жоанна Сфара. Действие мультфильма происходит в Алжире, в 1920-е годы. Здесь бок о бок живут мусульмане, евреи и христиане. У раввина есть дочь по имени Злабия, попугай и кот — именно от его лица ведётся рассказ. В какой-то момент кот съедает попугая и начинает говорить, после чего история превращается в затянувшийся спор обо всём на свете: о Боге, о кашруте, о собаках и о месте евреев в колониальной Северной Африке. Вскоре кот просит провести ему бар-мицву. Раввин советуется с коллегой, и вместе они решают, что кот не может быть евреем.
Параллельно из России приходит посылка с книгами. Внутри — живой человек, еврей-беженец, скрывающийся от советских погромов. Он художник и собирается отправиться в Иерусалим через Эфиопию, которую считает родиной «чёрных евреев». Фильм постепенно становится похож на дадаистское роуд-муви — с пустыней, караванами, мифами и разговорами на десятке языков.
Музыку к фильму написал Оливье Даво. Главные темы исполняетAmsterdam Klezmer Band — голландский ансамбль, сочетающий клезмер, балканские ритмы и фанковую подачу. Один из вокалистов, Алек Копыт, родом из Одессы — он поёт на русском, идише и румынском. Из-за этого саундтрек ощущается не как «подкладка под картинку», а как самостоятельный слой — с разными языками, акцентами и ритмами. Музыка не иллюстрирует происходящее, а движется рядом с персонажами — как будто бродит с ними по улицам Алжира, а потом пересекает и пустыню.
🔗Spotify | AppleMusic | YouTube
Petrojvic Blasting Company — A History of Public Relations Dilemmae (Self-released, 2010)
#gypsy#brass#jazz#accordion#balkan#trombone#trumpet#tuba#United_States
Единственный альбом цыганской группы из Лос-Анджелеса, основанной братьями Джастином и Джошем Петройвичами. Музыка группы сочетает в себе элементы традиционного джаза и звуки исторической родины братьев, балканского полуострова. Хотя у Blasting Company есть один альбом с своими песенями, записанный уже десять лет назад, группа исполняет традиционную балканскую музыку и предпочитает живые выступления на свежем воздухе. Petrojvic Blasting Company также принимали участие в написании ряда саундтреков, самый известный из которых — к мультфильму Патрика Макхэйла «По ту сторону изгороди».
🔗Spotify | AppleMusic