Установить свойства виджета в 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
Mohammad Rahim Khushnawaz — Afghanistan: Le Rubâb De Hérat (VDE, 1994)
#traditional#hindustani#rubab#Afghanistan
Устад Мохаммад Рахим Хушнаваз родился в семье гератских музыкантов в 1941 году. Его дед играл на табла, а с традиционной афганской музыкой Хушнаваза познакомил отец, певец и фисгармонист Амир Хушнаваз, обучавшийся музыке в Кабуле. Сам Хушнаваз научился играть на рубабе и стал одним из самых выдающихся мастеров своего времени. Поскольку Герат находится недалеко от Ирана, Хушнаваз специализировался на адаптации иранской микротональной музыки, добавляя промежуточные лады к рубабу. В 1995 году состоялся его европейский дебют в Театре де ля Виль в Париже. Вскоре после этого он бежал из Афганистана от правления талибов в иранский город Мешхед. «Le Rubâb De Hérat» — его альбом, посвященный, как следует из названия, гератскому стилю игры на рубабе.
Spotify | AppleMusic | VK
Gulab Afridi — The Colours Of Rubab (Worlds Within Worlds, 2023)
#traditional#hindustani#rubab#Pakistan
Гулаб Африди — музыкант из Пешавара, один из самых известных пакистанских исполнителей на рубабе. Его стиль уходит корнями в традиционную музыку пуштунских регионов Пакистана, о чем говорит даже его инструмент, покрытый сверкающим орнаментом и меньший по размеру, чем инструменты афганского производства. Но в стиле Африди мы также можем обнаружить влияние афганской классической музыки, особенно в композиции «Raag Yaman (I)», напоминающей виртуозную, новаторскую игру Хомаюна Сахи, прожившего некоторое время в Пешаваре. Преданность Африди рубабу принесла ему множество наград, в том числе премию премию «Фахр-э-Пешавар» («Гордость Пешавара»), «Фахр-э-Пахтунхва» («Гордость Пахтунхва») и премию «Азиатская мелодия». Гулаб также принял участие в «2017 UNESCO Culture Caravan», кульминацией которого стало выступление в Лахоре.
Bandcamp
Mohammad Omar — Virtuoso from Afghanistan (Smithsonian Folkways, 2002)
#traditional#hindustani#rubab#tabla#Afghanistan
Мохаммад Омар — один из самых известных исполнителей на рубабе. До 80-х он руководил оркестром «Радио Кабул», в который входили музыканты со всего Афганистана, а в 1974 году стал первым афганским музыкантом, прочитавшим курс лекций в Вашингтоне. Первое выступление Омара перед западной публикой прошло там же. Большинство произведений состояло из шакала, импровизационного введения в одном музыкальном ладу, и нагмы, композиции в том же ладу со сложным ритмом и повторяющейся мелодией. Аккомпанировал Омару мастер игры на табла, Закир Хуссейн. Музыканты впервые встретились утром перед концертом и обнаружили, что говорият на разных языках. К счастью, это не оказалось препятствием. Концерт был так хорошо воспринят, что его запись в течение многих лет распространялась по всему миру, но только в 2002 году, через год после отступления талибана из Кабула, была выпущена официально.
Spotify | AppleMusic
Homayun Sakhi — Music of Central Asia, Vol. 3: Homayun Sakhi: The Art of the Afghan Rubâb (Smithsonian Folkways, 2006)
#traditional#hindustani#rubab#tabla#Afghanistan
Хомаюн Сахи — всемирно признанный мастер афганского рубаба. Он родился в 1976 году в Кабуле в семье музыкантов, где, благодаря отцу, обучился искусству игры на рубабе. В 2002 году он переехал в Фримонт, штат Калифорния, где до сих пор преподает афганскую музыку в основанной им школе. Вместе с Тарьялаем Хашими, мастером игры на барабанах табла, Сахи на этом альбоме исполняет афганскую традиционную музыку, имеющую множество общих черт, с одной стороны, с индийской рагой, и с персидскими мелодиями — с другой.
Spotify | AppleMusic | VK
Nasim Khushnawaz — Songs From The Pearl of Khorasan (Worlds Within Worlds, 2022)
#traditional#hindustani#rubab#Afghanistan#Iran
Насим Хушнаваз — музыкант в седьмом поколении, cын гератского исполнителя на рубабеРахима Хушнаваза. Насим проживает в Иране с тех пор, как вместе со своей семьей бежал от правления талибов. Он продолжает традицию классического афганского, и более иранизированного хорасанского и гератского исполнения на рубабе. В 2010 году отец Насима отправился в свой родной город Герат, где скоропостижно скончался от сердечного приступа. Насим поспешил в Герат на похороны отца, но, возвращаясь в Иран, попал в аварию и впал в кому. Очнувшись, он потерял память и ему пришлось заново осваивать свой инструмент, с которым в детстве его познакомил отец. Об этой истории рассказывает документальный фильм «Nassim, the territory of memory». Сегодня Насим продолжает семейную традицию и обучает своих сыновей и некоторых афганских и иранских студентов музыке Афганистана.
Spotify | AppleMusic | Bandcamp
The Ensemble Of Rahim Takhari — Shirin Dahani / Sweet Lips: Music of North Afghanistan (Pan Records, 1996)
#traditional#rubab#dhol#zerbaghali#ghaychak#dutar#dambura#Afghanistan
«Shirin Dahani», что значит «сладкоголосие», — редкая запись, посвященная музыкальным традициям севера Афганистана. Там эта страна граничит с Таджикистаном и Узбекистаном, поэтому в музыке можно услышать влияние фольклорных традиций этих стран, а персидский элемент представлен ярче, чем на юге. Музыку на этом альбоме исполняет ансамбль Рахима Тахари, певца, исполнителя на дутаре и гайчаке. В его ансамбле также есть рубаб, дамбура, зербагали и дол. Исполнитель на рубабе, кстати, учился у знаменитого Устада Мохаммада Омара. Все песни исполнены на языке дари. Некоторые из них являются положенными на музыку газелями и рубаями, а некоторые — народными произведениями. Часть инструментальных композиций позаимствована из узбекских и пуштунских песен.
Spotify | AppleMusic | Soundcloud
Various Artists — In the Footsteps of Babur: Musical Encounters from the Lands of the Mughals (Smithsonian Folkways, 2010)
#traditional#dutar#setar#tabla#rubab#santur#Afghanistan#India#Tajikistan
«В месяц Рамадан 899 года и на двенадцатом году жизни я стал правителем в стране Ферганской», — так начинается автобиография Захируддина Мухаммада Бабура, основателя Империи Великих Моголов. Благодаря Smithsonian Folkways Recordings и благотворительной организацииКарима Ага Хана, лидера мусульман-исмаилитов, пять музыкантов из Центральной Азии, Афганистана и Северной Индии собрались вместе и записали совместный альбом, демонстрирующий музыкальное разнообразие территорий, которые некогда называлась Империей Великих Моголов. В число музыкантов входят исполнитель на индийском сантуреРахул Шарма, исполнитель на афганском рубабеХомаюн Сахи, афганско-американский виртуоз таблаСалар Надер, бадахшанский сетарист Мухтор Мубораккадомов и мастер дутараСирожиддин Джураев.
Spotify | AppleMusic
Qais Essar — Echoes Of The Unseen (Worlds Within Worlds, 2024)
#traditional#hindustani#rubab#dilruba#daf#tabla#bansuri#santoor#Afghanistan
Каис Эссар — афганский композитор и инструменталист, известный своим новаторским подходом к традиционной музыке, сочетающим наследие с современностью. В своём альбоме Echoes of the Unseen Эссар экспериментирует с афганской классической музыкой, в центре которой находится рубаб — национальный инструмент Афганистана (и предшественник индийского сарода).
Композиции альбома основаны на рагах — традиционных мелодических формах афганской и индийской классической музыки, которые соответствуют определённым временам суток, начиная с утра и заканчивая ночью. Полевые аудиозаписи природы Северной Аризоны, где живёт Эссар, создают в альбоме дополнительное измерение естественных звуков. А за многообразие традиционных инструментов на разных треках отвечали Сандип Сингх (дильруба), Ниламджит Дхиллон (табла), Эрик Занг (даф), Джас Ахлувалиа (табла), Камалджит Ахлувалиа (сантур) и Химаншу Нанда (бансури).
Экспериментальный подход Эссара позволяет расширить границы звучания рубаба через импровизацию в рамках традиции. Музыкант обращается к музыкальной линии Устада Аллаудина Хана, особенно к игре на сароде Устада Али Акбар Хана и Устада Аашиш Хана (сына и внука Аллаудина, соответственно). А в рамках текущего запрета на музыку в Афганистане, Эссар подчёркивает важность сохранения и развития наследия рубаба, обеспечивая выживание инструмента в современном музыкальном контексте.
🔗AppleMusic | Spotify | YouTube | Deezer | TIDAL | Napster | Amazon | Bandcamp | Telegram
Embryo — Reise (Schneeball, 1979)
#traditional#field_recording#jazz#rock#hindustani#rubab#dilruba#kanjira#dutar#tabla#ghatam#dholak#thavil#Afghanistan#Pakistan#India
Во второй половине 70-х Кристиан Берчард решил прокатиться по «тропе хиппи» и пригласил свою группу Embryo составить ему компанию. Вместе они проехали через Ближний Восток, Афганистан, Пакистан и Индию, импровизируя по пути с профессиональными и уличными музыкантами. Из записей этих импровизаций и получился альбом «Reise», что значит «путешествие». Некоторые композиции сочетают в себе традиционную музыку с прогрессивным роком («Kurdistan») или даже с панком («Es Ist, Wie's Ist»), в то время как другие полностью традиционные («Chan Delawar Khan»). На альбоме отметилось множество выдающихся музыкантов. Среди них — виртуоз игры на афганском рубабе Мухаммад Омар, афганский исполнитель на саринде Мачин Абдул Рашид, перкуссионист Т. А. С. Мани и певица Рамамани из Бангалора, перкуссионист Рамеш Шотам из Южной Индии и многие другие.
Spotify | AppleMusic | VK