Установить свойства виджета в 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
Ustad Saami — A for Aleph Live (A for Aleph, 2024)
#surti#khyal#tambura#harmonium#tabla#Pakistan
Выступление прославленного певца Устада Саами и его сыновей на студии пакистанского лейбла звукозаписи A for Aleph. На записи можно услышать произведение Khayal (خیال), названное в честь одной из доминирующих форм музыки Северной Индии, и Kalam-e-Khusro, посвященное культовому суфийскому поэту Амир Хосрову. У него более семи веков назад обучался далекий предок Устада Саами, Миян Самат.
Семья Устада Насируддина Саами стояла у истоков школы каввали, основанной в XIII веке в Дели. Стиль Саами называется «Судх Бани» и, судя по всему, он является последним из ныне живущих вокалистов, практикующих микротональную систему шрути из 49 нот.
🔗 YouTube | Spotify | AppleMusic | Bandcamp
Ustad Saami — East Pakistan Sky (Glitterbeat Records, 2021)
#surti#khyal#traditional#tambura#harmonium#tabla#Pakistan
Семья Устаада Насируддина Саами стояла у истоков школы каввали, основанной в XIII веке в Дели. Его предок Миян Самат обучался у самого Амира Хосрова, культового суфийского поэта, после чего традиция передавалась от отца к сыну в течение более чем 7 веков. Сам Саами начал свой творческий путь в середине 50-х годов под руководством своего дяди Устаада Мунши Разиуддина. В течении многих лет обучения ему было разрешено выражать свои мысли только посредством пения. Стиль Саами называется «Судх Бани» и судя по всему он является последним из ныне живущих вокалистов, практикующих микротональную систему шрути из 49 нот. East Pakistan Sky – его третий альбом, спродюссированный Яном Бреннаном, известным по работе с Tinariwen. Запись проходила в Карачи во время живого сета на крыше дома мастера под музыкальное сопровождение его четырёх сыновей.
Spotify | AppleMusic | Bandcamp | VK
Various Artists — Indian Talking Machine (Sublime Frequencies, 2021)
#traditional#khyal#carnatic#dhrupad#hindustani#thumri#India
С 2012 по 2013 год Роберт Миллис работал старшим научным сотрудником программы Фулбрайт в Индии, где изучал индийскую индустрию звукозаписи. Самые ранние записи в этой стране были сделаны еще в 1902 году. Это один из первых незападных аванпостов индустрии звукозаписи. В декабре 2015 года Sublime Frequencies опубликовали книгу Миллиса, в приложение к которой вошли два диска с музыкой из его коллекции индийских шеллаковых грампластинок, выпущенных в период с 1903 по 1949 год. На альбоме можно услышать виртуозные инструментальные соло и вокальные произведения, народную музыку и записи театральных представлений. Отцифровкой пластинок занимался Джонатан Уорд (Excavated Shellac), а мастерингом – Майкл Грейвс (Analog Africa, Dust-to-Digital, Hank Williams Garden Spot Recordings).
🔗Bandcamp
Устад Сарханг исполняет «Встань и принеси пару бокалов вина (خیزید و یک دو ساغر مینا بیاورید)»
#hindustani#klasik#khyal#thumri#tarana#ghazal#Afghanistan
Мохаммад Хусейн, позже прославившийся как Устад Сараханг, родился в 1924 году в Харабате, самом музыкальном районе Кабула. Его отец, Устад Голам Хуссейн, познакомил мальчика с индийской классической музыкой, после чего Мохаммад отправился в Британскую Индию и продолжил учёбу под руководством Устада Ашика Али Хана.
После 16 лет обучения Мохаммад вернулся в Кабул. В 1949 году в возрасте 25 лет он получил титул «мастер» или «устад (استاد)» за своё выступление на музыкальном фестивале в кинотеатре «Памир», а позднее афганское правительство присвоило ему титул «композитор» или «сараханг (سرآهنگ)».
В Афганистане Устад Сараханг посвятил себя преподаванию музыки. Среди его учеников — Хаджи Хоршад, Шариф Газаль, Наим Назари. Кроме того, Сараханг написал несколько статей для газеты «Пуштунский голос (پښتون غږ)» и две книги, «Закон о музыке (قانون طرب)» и «Музыка раги (موسیقی راگ ها)». Сараханг выступал в различных жанрах, включая кхаял, тумри и тарану. В его репертуаре можно было услышать газели на слова Амира Хусрова и Абд аль-Кадир Бедиля, а в Кабульских чайханах он проводил время за обсуждением поэзии в компании своего друга, мистика и знатока поэзии Канди Ага.
Устад приобрел международную популярность после выступлений в СССР, Пакистане и Индии. Во время его последнего визита в музыкальную школу Аллахабада в Индии, женщины склонили головы, образовав дорогу из своих волос — таким образом они хотели продемонстрировать своё уважение к Устаду.
Во время последней поездки в Индию в 1982 году Сараханг перенёс сердечный приступ. Несмотря на то, что врачи советовали ему воздержаться от пения, он не перестал выступать. В 1983 году с ним случился ещё один инфаркт, после чего он скоропостижно скончался, оставив после себя богатое музыкальное наследие.
В 2021 году Хамид Хами выпустил биографию Сараханга «Душа Харабата (جان خرابات)».