Установить свойства виджета в 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
Nora Brown — Long Time To Be Gone (Jalopy Records, 2022)
#traditional#appalachian#banjo#United_States
Нора Браун специализируется на традиционной музыке Южных Аппалачей и мастерски владеет банджо и гитарой. В детстве она обучалась игре на банжо у звезды американского фолк-ривайвла Джона Коэна, а также у не менее известных фолк-исполнителей Джорджа Гибсона, Ли Секстона и Арта Розенбаума. Long Time To Be Gone — третий альбом Норы, записанный в церкви Святой Анны, возведенной в Бруклин-Хайтс в конце XIX века.
Помимо велеколепной акустики церкви Святой Анны, Long Time To Be Gone примечателен уникальным набором инструментов, каждый из которых связан с музыкальной родословной Браун. Среди инструментов Норы — банджо Luscomb 1888 года, принадлежавшее её прапрадеду; безладовое банджо, изготовленное её отцом; и пятиструнное банджо, на котором когда-то Роско Халкомб записал свой альбом High Lonesome Sound. Роск Халкомб общался с учителем Норы, Джоном Коэном, а его музыкой в свое время восхищался даже Боб Дилан. Теперь его пятиструнное банжо хранится в Библиотека Конгресса США, но на время записи попало в руки к Норе.
🔗Spotify | AppleMusic | Bandcamp
Inger Nielsen — Inger Nielsen Sings Danish Folk Songs (Folkways Records, 1965)
#traditional#guitar#banjo#Denmark
Ингер Нильсен записала этот альбом в Нью-Йорке в 1965 году по настоянию своего бойфренда, фолк-музыканта и артиста Folkways RecordsПитера Ла Фаржа. На гитаре и банджо ей аккомпанирует Барри Корнфельд.
Сначала режет слух соседство патриотических произведений композитора Карла Нильсена — Denmark in a Thousand Years и Our Home, You Danish Earth — с песнями о повседневности и личных трагедиях. Однако на контрасте гимны теряют холодный официоз. Они начинают звучать как часть той же жизни, что дышит в историях простых людей.
Так, Limfjorden посвящена красоте фьордов и жизни у их берегов. The Roadmaker — история мастера, посвятившего жизнь работе с камнем, но так и не удостоившегося надгробия на собственной могиле. Saturday Evening — трагическая песня о девушке, напрасно ждавшей возлюбленного и увидевшей его на следующий день в церкви уже с другой.
На сборнике есть несколько песен о детстве: Mother and a Child, колыбельная Ганса Христиана Андерсена, и Born in Jutland, воспоминание о юношеских годах, проведённых в Ютландии. Есть и песня на ютландском диалекте о любви пастуха и пастушки — Mads Doss.
Песня Roselil рассказывает о юноше, который развесил золотые кольца на деревьях в саду своей возлюбленной. Та поклялась, что не будет верна ни одному мужчине, пока не зацветут золотые цветы. Фольклорная фантазия звучит и в The Gold Dice — балладе о цыгане, выигравшем в кости руку принцессы и её царство.
Завершающая композиция, En lærke letted («Взлетел жаворонок»), посвящена освобождению Дании после Второй мировой войны. Жаворонок здесь символизирует не только весну, радость и надежду, но и саму страну. Какое-то время эта птица считалась символом Дании, но потом уступила место лебедю.
🔗Spotify | Telegram
Oak and Ivy — Holler (Self-Released, 2024)
#traditional#field_recording#appalachian#oldtime#clawhammer#banjo#United_States
Holler — сольная акустическая запись, сделанная ночью в Аппалачах. В альбом вошли традиционные песни региона, исполненные без студийной обработки, в живой и непосредственной манере. Среди них, например, — The Cuckoo, английская народная песня, получившая широкое распространение в Северной Америке, и Cluck Old Hen, один из старейших образцов аппалачского репертуара, впервые записанный в 1923 году Фиддлином Джоном Карсоном, но известный в устной традиции как минимум с 1886 года.
🔗Bandcamp | Telegram
Various Artists — Industrial Strength Bluegrass (Folkways Records, 2021)
#traditional#bluegrass#banjo#fiddle#mandolin#appalachian#Ohio#United_States
Industrial Strength Bluegrass рассказывает о том, как выходцы из Аппалачей, переехавшие на юго-запад Огайо в середине XX века, принести с собой музыку блюграсс и вплели её в ритм индустриального города. Песни альбома отражают жизнь мигрантов, проходящую между заводскими цехами и субботними вечерами с банджо; передают ностальгию по родным горам; показывают, как блюграсс адаптировался в новом окружении, не теряя своей музыкальной сути.
Альбом спродюсировал музыкант и радиоведущий Джо Маллинз, а в записи приняли участие многие звезды современного блюграсса, включая Ронду Винсент,Бобби Осборна и самого Маллинза. Расширенное виниловое издание альбома включает архивные записи The Stanley Brothers,Larry Sparks,Red Allen & The Allen Brothers, которые помогают еще глубже погрузиться в музыкальный контекст «индустриального блюнрасса».
🔗AppleMusic | Spotify | YouTube | Deezer | TIDAL | Bandcamp
Jerron Paxton — Things Done Changed (Folkways Records, 2024)
#blues#oldtime#ragtime#cajun#guitar#banjo#harmonica#United_States
Джеррон Пакстон — мультиинструменталист из Лос-Анджелеса, выросший в семье выходцев из Луизианы. Он исполняет блюз, рэгтайм, олдтайм и каджунскую музыку — локальную традицию Луизианы, возникшую среди франкоязычного населения и вобравшую в себя элементы французского фольклора, креольной культуры и ритмики африканской диаспоры.
Семья Пакстона перебралась в Калифорнию после убийства Эмметта Тилла — четырнадцатилетнего подростка, линчёванного в Миссисипи в 1955 году после обвинения со стороны белой женщины. Убийство Эмметта Тилла получило широкую огласку и стало поворотным моментом в истории борьбы за гражданские права чернокожих в США. Многие афроамериканцы после этого предпочли уехать с Юга, и Южный Лос-Анджелес, куда попали родственники Пакстона, стал одним из новых центров их жизни — не чужим, а скорее пересобранным Луизианским югом на новом месте.
Things Done Changed — первый альбом Джеррона Пакстона, целиком состоящий из авторских песен. При этом, как и предыдущие работы музыканта, он выдержан в стилистике традиционной афроамериканской музыки первой половины XX века. Музыкальные интересы Пакстона начали формироваться ещё в детстве — он подолгу слушал радио, стараясь уловить манеру исполнения, структуру старинных песен и их скрытые смыслы. Со временем он освоил гитару, банджо, фортепиано, скрипку и другие инструменты, звучащие в афроамериканской музыкальной традиции.
На альбоме Things Done Changed Пакстон создаёт авторские композиции, в которых стилистика прошлого становится языком разговора о настоящем. Например, в песне So Much Weed он с иронией и горечью поёт о том, как чернокожие американцы до сих пор отбывают сроки за незначительные правонарушения, связанные с марихуаной, — в то время как в большинстве штатов её продажа уже давно легализована.
🔗Spotify | AppleMusic | YouTube | Bandcamp | Telegram
Tail Toddle — Tot Leeringhe Ende Vermaeck (Stoof, 1977)
#traditional#medieval#ballad#banjo#guitar#dulcimer#bouzouki#epinette#mandolin#Netherlands
Почти никому не известный единственный релиз коллектива Tail Toddler. Группа исполняла средневековые традиционные голландские баллады в сопровождении мандалины и флейты. Гравюра на обложке принадлежит перу Лукаса ван Лейдена и была выполнена в Амстердаме в 1524 году.
🔗Telegram