Установить свойства виджета в 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
🗓On August 29, 1904, Ernest Methuen Mancoba (1904–2002) was born — an avant-garde artist.
He was born in the Transvaal Colony — a British territory in Southern Africa (today part of South Africa). 🇿🇦🎨
Mancoba became one of the first professional black modern artists in South Africa, leaving a remarkable legacy in the art world. 🌍✨
#Art#AvantGarde#SouthAfrica#ArtHistory#Culture
#Kultura
#Avantgarde
#CroixSonore
Программа «НАБЛЮДАТЕЛЬ» на YouTube (в Rutube пока не нашла) телеканала “Культура” с ФЕКЛОЙ ТОЛСТОЙ 23.04.2015, посвящённая МУЗЫКАЛЬНОМУ АВАНГАРДУ, где я рассказываю о композиторе НИКОЛАЕ ОБУХОВЕ и его знаменитом «мистически/магически/ электроакустическом» инструменте ЗВУЧАЩИЙ КРЕСТ (Croix Sonore)
Там, на 18й минуте, Вы можете увидеть фрагмент кинофильма знаменитого французского кинорежиссёра ЖЕРМЕН ДЮЛАК (это была Дама-кинорежиссёр) 1934 года об Обухове и его Кресте.
Этот фильм считался потерянным, а я разыскала его в одном из французских архивов в 2008 году
https://youtu.be/yvhoeFhUxw8?si=GASTJx9pOCdN6C7S
Сегодня венгерский композитор ДЬЕРДЬ КУРТАГ (GYÖRGY KURTÁG) 19.02.1926 встретил свои 100 лет.
Много же всего произошло за это время и с ним, и с нами!
Один из классиков послевоенного восточноевропейского музыкального авангарда, он верен всегда был одной важной теме - Музыкальному Детству.
Как и БЕЛА БАРТОК с его «Микрокосмосом», он написал своей вариант Детского Космоса, который назвал «Ятекок». JATEKOK («Игры» в переводе с венгерского).
Вот, к примеру, как звучит в этом Космосе Первый Концерт
П.И. Чайковского:
https://youtu.be/-qkoNM0D0T4?si=PKjdFvrwJCNKXPz0
А вот и сам Первый Концерт Чайковского;
https://youtu.be/G5KM-J9I9ss?si=0eWYvHxNjamjpwOj
Хорошего дня, друзья!
И многие Лета Куртагу!
#music
#avantgarde
#Jatekok
#gyorgykurtag
Москва ● Punk Fiction ● 15.01 (Чт) ● 20:00
#avantgarde#electronic#hiphop#instrumental#progressive#psychedelic
► Вечеринка в Гетто ● VK
Наш ежегодный мега-праздник в честь двух именинников и виртуозов баса – Мишани и Колюни!
Участники:
► IWKC ● TG ● VK
► Detieti ● TG ● VK
► Dj Жмерек ● VK
Заплати любую сумму
🪆Перенесла рубрику «советский дизайн» со вчера на сегодня. И продолжаю рассказывать вам о том, что СССР показывал на международной выставке в Париже в 1925 году.
📝 Сделала подробную статью на Дзен с материалами о стенде деревообделочного факультета ВХУТЕМАСА под руководством Антона Латинского.
🛠 В то время, как факультет металлообработки под руководством Александра Родченко смог представить на выставке не только чертежи, но и реальные образцы небольших изделий из металла. А самому Родченко доверили сделать ставшую знаменитой полноразмерную модель рабочего клуба (впоследствии многократно реконструированную).
🏠 Антон Латинский, позже возглавивший свой факультет и имевший меньше авторитета среди других его сотрудников, представлял со своими студентами лишь чертежи фасадов, интерьеров и оборудования для рабочего клуба и избы-читальни. Единственным объемным экспонатом был электрифицированный масштабный макет этой избы, также привлекавший внимание посетителей.
📸 По итогам выставки, часть разработок самого Лавинского и его студентов, среди которых особенно выделялись Иван Лобов и Борис Земляницын - были опубликованы в серии таблиц «Искусство в быту» (1925), получив свои «5 минут славы».
🙌 К выставке «ВХУТЕМАС 100. Школа авангарда», проходившей в Музее Москвы в 2020-21 гг, мы с коллегами реконструировали в объёме некоторые предметы интерьера рабочего клуба (На последних 3-х фото - цифровая реконструкция рабочего клуба Марины Юрьевой, выполненной под моим руководством. И наш с Александром Семёновым стул). Автор открытки - Людмила Гальченко (по моей просьбе) 😇
🤓По ним, с одной стороны, видны зачатки нового функционального подхода к проектированию, с акцентом на трансформирующиеся элементы и доступные материалы. А с другой, всё ещё заметен более «декоративный» и «наивный» подход к конструктивизму у отдельных студентов (см. пример со стулом Кульганова/Земляницына).
Подробные фото с комментариями и перечислением авторов - в статье.
🤗Желаю вам приятного чтения и хороших выходных!
#AvantGarde#SovietDesign#Archive#Dzen#InteriorDesign#Furniture
Агенты Гипохтона — Некоронованный Король (2025)
Мы пришли из глубин Outsideness, чтобы раздавить клопа в великой пустоте. Мы пролетариат титанических подземелий, огонь из глубин, копатели незримых окопов, тройные агенты невиданного и неслышанного!
Мы собрались, чтобы уничтожить контроль и низвергнуть его агентов в бездну забвения!
ПОЖАЛУЙСТА ПОСЛУШАЙТЕ ЭТОТ АЛЬБОМ ЕСЛИ ВАМ НЕОБХОДИМО ВПЕЧАТЛЕНИЕ НОМЕР ОДИН!
https://agentsofhypochton.bandcamp.com/album/-
Георгий - вокал, шумы, флейта, казу, ТРУБА!
Константин - гитара, казу, вокал, бэк-вокал, перкуссия, ТРУБА!
Тимур - барабаны, вокал, гитара, перкуссия, шумы, ВЕДРА!
#sludge#stoner#noise#avantgarde#spoken_word#raw_energy#agents_of_hypohton