Установить свойства виджета в 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
Married at 12
#video#Gypsy
Russian Gypsy boys get married when they’re 10 to 12 years old. Girls tie the knot when they’re a bit older, from 15 to 16. The newlyweds are barely acquainted, but they’ll have a lifetime to get to know each other, as adults say. Kids have no say when it comes to choosing their future spouse. The groom's family has to pay a hefty dowry for the bride. A young wife is expected to take care of most of the household chores. Unlike her husband, a Gypsy wife can't work or study. While other Gypsy traditions are fading away, child marriages live on. This is what a Gypsy wedding looks like.
Follow: https://t.me/rtdocumentary
Christian Escoude & Francis Lockwood — Gypsy Swing (Encore Merci, 2015)
#gypsy#jazz#manouche#France
Цыганский джаз, исполненный в акустическом стиле с использованием аккордеона, скрипки, пианино, гитары и контрабаса. Авторство принадлежит двум мастерам, джаз-мануш гитаристу Кристиану Эскуде и джазовому клавишнику Фрэнсису Локвуду.
Spotify | AppleMusic
Zece Prâjini's Peasant Brass Band — Fanfare paysanne de Zecz Prâjini (Buda Records, 1996)
#traditional#brass#gypsy#Romania
Ансамбль румынской цыганской народной музыки из села Зеце Прэджини под городом Яссы. В музыке коллектива очень много балканской краски. Общий стиль исполнения очень быстрый, традиционный, акустический, но тем не менее напоминающий работы Горана Берговича для фильмов Эмира Кустурицы, для Андерграунда в частности. Частично альбом был записан в 1989 году в концертном зале Филармонического оркестра города Яссы, а частично – во время живого выступления в родном селе коллектива в 1993 году. Альбом входит в серию Musique Du Monde французского лейбла Buda Records, но так же был выпущен в Румынии лейблом Muzeul Țăranului Român под другим названием и с другой обложкой.
🔗Spotify | AppleMusic
Various Artists — My Greatest Revenge: Flamenco Recordings, 1904-1938 (Death Is Not The End, 2024)
#traditional#field_recording#gypsy#flamenco#Spain
Коллекция ранних записей cante jondo («глубокой песни») — основополагающего стиля андалузского фламенко. Cante jondo выделяется своим эмоциональным, проникновенным вокалом и сложным гитарным аккомпанементом.
Фламенко зародилось в фольклорных традициях Андалусии и было сформировано усилиями преимущественно цыган, превратившись в самостоятельное музыкальное явление уже к XVIII веку.
Сборник включает одни из первых записей фламенко, сделанных в начале XX века. Среди исполнителей — El Mochuelo, La Andalucita, Niño de Cabra и Juan Breva, чьи выступления передают меланхоличную и задумчивую атмосферу жанра, несмотря на низкое качество записи, обусловленное техническими ограничениями того времени.
🔗Bandcamp | Telegram
Mandino & Note Manouche — Gypsy Swing From Alsace (Materiali Sonori, 1994)
#gypsy#jazz#manouche#Alsace#France
Мандино Рейнхардт и компания исполняют эльзасский джаз-мануш. Эльзас — историческая область на востоке современной Франции, которая граничит с Германией и Швейцарией. В Эльзасе до какого-то времени был распространен эльзасский диалекте немецкого языка. Там же очень развито направление цыганского джаза. Есть даже большое интервью с Мандино Рейнхардтом для журнала Jazz & Culture об этом направлении в Эльзасе.
🔗Spotify | AppleMusic
Mólo Sâyat — ĦADÃEQ (Zephyrus, 2021)
#jazz#gypsy#klezmer#oud#Belgium#Lebanon
В 2010 году группа студентов киношколы в Брюсселе начала исполнять приправленные джазом традиционные средиземноморские песни: от греческих, итальянских и балканских до ливанских и египетских. Руководил проектом саксофонист Mathieu Najean, а место вокалиста занял ливанский певец Pôl Seif. Выпустив свой первый альбом Burj Babil в 2012 году, Mòlo Sâyat отыграли бесчисленное количество концертов в Европе и съездили в тур по Канаде. В 2015 году группа взяла перерыв, но снова собралась в Ливане в 2019 году. Результатом стал новый альбом Hadaeq, на котором нашлось место и средиземноморскому и фолку, и клезмеру, и французскому шансону. На нём можно услышать звучание арабского уда, ближневосточной перкуссии и нечетные музыкальные размеры.
Spotify | AppleMusic | 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
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
Мамуля!С Твоим Днём❤️Ты всё знаешь✨А эта фотокарточка лучше всех слов выражает наше мощное суперПартнёрство!👭Мы тебя очень любим!Будь Мамчик..будь счастлива!💫
#mom#birthdaymom#birthdaygirl#happybirthday#сднемрождения#именинница#ларико#нуцка#лялися#мамчуля#мамико#лариска#gypsy#мама#сднемрождениямамы#мамампосвящается#июль#positivevibes#moodoftheday#photooftheday#youngandbeautiful#purelove#heavenonearth