Установить свойства виджета в 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
Yashlik — Yashlik (Maqom Soul, 2025)
#uyghur#funk#soul#psychedelic#Uzbekistan#Kazakhstan
Maqom Soul — созданный в 2025 году узбекский лейбл, работающий с редкой и забытой музыкой Центральной Азии. Yashlik — дебютный релиз лейбла, виниловое переиздание знакового альбома уйгурского вокально-инструментального ансамбля «Яшлик», впервые записанного и выпущенного в 1978 году. Это одна из редких записей, где синтезаторы, электрогитары и ударные можно услышать вместе с традиционными уйгурскими инструментами.
Ансамбль «Яшлик» (в переводе с уйгурского — «Молодёжь») был основан в 1974 году при Уйгурском музыкально-драматическом театре в Алматы. Выросший из театральной среды, он довольно скоро вышел за её пределы благодаря сочетанию уйгурских мелодий, соула, советской эстрады и психоделического рока. Коллектив гастролировал по городам СССР, выступал в Венгрии, Болгарии и Румынии, становился лауреатом многочисленных музыкальных конкурсов.
🔗Spotify | AppleMusic | Bandcamp | Telegram
Various Artists — Synthesizing the Silk Roads: Uzbek Disco, Tajik Folktronica, Uyghur Rock & Tatar Jazz from 1980s Soviet Central Asia (Ostinato Records, 2024)
#disco#electronic#funk#jazz#synth#uzbek#tajik#uyghur#tatar#Uzbekistan
Ostinato Records выпустили сборник редкой танцевальной музыки 1980-х годов из Советской Средней Азии. На альбоме представлено 15 тщательно отреставрированных композиций, среди которых узбекская диско-музыка, таджикский электронный фолк, уйгурский рок и крымскотатарский джаз.
Записи были сделаны на Ташкентском заводе грампластинок, который находился под управлением государственной звукозаписывающей компании «Мелодия». В 1970-х годах на заводе ежегодно выпускались миллионы пластинок с музыкой разных народов региона — узбеков, таджиков, казахов, киргизов, туркмен, каракалпаков и уйгуров. Несмотря на строгую политическую цензуру, завод стал местом, где музыканты имели значительную творческую свободу, так как «Мелодия» не была ориентирована на прибыль.
После смерти Сталина в 1953 году советская музыкальная сцена начала открываться западным влияниям, что привело к развитию джаза, рока и диско. К концу 1970-х годов в СССР уже существовало около 20 000 дискотек, и Ташкент стал важным центром музыкального разнообразия благодаря своему расположению на пересечении культурных путей. Так и в сборник попали артисты множества национальностей — узбеки, таджики, уйгуры, крымские татары и даже корейцы.
Многие музыканты в Ташкенте имели доступ к передовым музыкальным технологиям благодаря бухарским евреям, которые привозили оборудование из США и Японии. Это позволило местным артистам использовать такие синтезаторы, как Moog и Korg, что придавало их музыке уникальное на тот момент звучание.
Идея создания сборника принадлежит Анвару Каландарову, который предложил Ostinato Records выпустить альбом на основе своей коллекции редких записей. Осенью 2023 года основатель лейбла Вик Сохони вместе с Каландаровым отправились в Ташкент, чтобы связаться с авторами композиций. Благодаря этому в сборник вошло несколько записей с оригинальных плёнок, сохранённых самими музыкантами.
🔗Spotify | AppleMusic | Bandcamp | VK | Telegram
Various Artists — Digging Central Asia: Musical Archaeology along the Silk Road (Death Is Not The End, 2026)
#funk#soul#psychedelic#pop#rock#uyghur#uzbek#tajik#kurd#Tajikistan#Uzbekistan#Kazakhstan#Georgia
Digging Central Asia — сборник композиций 1978–1989 годов из республик Советского Востока. Вместе с британским лейблом Death Is Not The End этот альбом подготовил Анвар Каландаров, известный нам как основатель узбекского лейбла Maqom Soul и автор компиляции синти-попа Центральной Азии Synthesizing the Silk Roads.
По словам Анвара, у него не было какого-то принципа, по которому он отбирал композиции для Digging Central Asia. Скорее, эта компиляция отражает многолетний путь, который он прошёл в поисках редких артефактов популярной музыки региона.
Тем не менее, все проекты, попавшие на сборник, объединяет желание как-то по-своему работать с традицией. Насиба Абдуллаева делала это через эстрадную музыку, «Синтез» — через джаз-рок, а «Гульшан» — через оркестровые аранжировки для радио и телевидения. Курдская группа «Кома Ветан» искала пересечения фольклора и психоделического рока, а «Яшлик» адаптировали уйгурские мелодии под фанк и соул. Вместе эти коллективы демонстрируют, насколько гибкой и изобретательной была популярная музыка Центральной Азии в конце советской эпохи.
🔗Bandcamp | Telegram