Установить свойства виджета в 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
Московское метро идеально на 99%, но…
Тот самый 1% из нью-йоркской подземки образца 1962 года: Джозеф Э. О'Грэйди, член транспортного управления Нью-Йорка (MTA), за барной стойкой в так называемом «вагоне мечты».
#cheers
В день рождения Веры Игнатьевны Мухиной обратимся к её работам из стекла под грифом #cheers, которые она создавала в экспериментальном цехе Ленинградского завода художественного стекла (ЛЗХС).
«Но самая большая ее любовь — стекло. Она была очарована его возможностями еще в молодости, когда любовалась витражами церкви Sainte Chapelle в Париже, изделиями стеклодувов Мурано. Потом это увлечение вспыхнуло в 1928 году, опять в Париже: увидев выставленную фирмой Лалика скульптуру из стекла, три дня ходила в магазин фирмы, купила стеклянного краба, разговаривала и с продавцами, и с мастерами, и с художниками, но секрета стеклянного литья так и не узнала», — О.П. Воронова, 1976.
Винный набор «Астра» из хрусталя, бокалы на забавных ножках с сочетанием бесцветного и окрашенного стекла, будто бы сделанная из лунного камня крюшонница — новое слово в советском художественном стеклоделии, сказанное героиней сегодняшнего дня.
📷 Русский музей
Обычно мысль полетать на воздушном шаре меня пугает, но не в этом случае — в начале недели в небо над Мельбурном поднялась «пробка» от Moët & Chandon в честь старта первого сезона чемпионата мира Формулы-1, официальными брызгами которого является шампанское Дома. #cheers!
📷 peter_van_alphen
Лингво-#cheers в эфире
В список моих любимых по звучанию и значению слов входит кутёж. Недавно узнала, что в переводе на английский это binge, например — 5 day drinking binge, то есть 5 дней кутежа.
И пока я преподаю основы кутежелогии, моя приятельница София, о которой я вам уже рассказывала, продолжает нетривиально учить людей английскому: через мемы (если вы не вышли замуж к 30, есть и хорошие новости) — и это несмотря на солидный бэкграунд и сертификат CELTA.
Как угрожать в стиле A$AP Rocky и проматывать деньги на богатом английском — знает @speakeasychannel
Обычно мысль полетать на воздушном шаре меня пугает, но не в этом случае — в начале недели в небо над Мельбурном поднялась «пробка» от Moët & Chandon в честь старта первого сезона чемпионата мира Формулы-1, официальными брызгами которого является шампанское Дома. #cheers!
📷 peter_van_alphen
С вами рубрика #cheers и платье в форме бутылки шампанского Veuve Clicquot.
Музей моды в Бате пишет, что костюм, вдохновлённый популярностью рекламных приёмов в одежде, был изготовлен для ирландской светской львицы Ады Пауэр в 1900-х: тёмно-зелёный бархат юбки имитирует стекло, этикетка отсылает к знаменитому шампанскому Дому, золотой лиф и объёмные рукава — к фольге и пузырькам, ну а шляпка изготовлена в форме пробки. Заверните!
📷 Fashion Museum Bath
Хочется превратить объединение друзей канала праздничным тегом #субъективныйвыбор в добрую традицию, поэтому встречайте новую подборку новогодних и не только хотелок от моих любимых авторов, которыми стоит пополнить свои вишлисты.
- Александр Рымкевич, эксперт мужского стиля и автор канала @lebonmot: «Поскольку я завершаю ремонт, то все мои идеальные подарки из числа предметов дизайна и декора. Давно засматриваюсь на этот табурет Alessi Poêle авторства Филиппа Старка. Вообще он вдохновлялся сковородкой, но мне в форме сиденья видится скорее металлическая плакетка на пробке для шампанского». #cheers!
- Владик, медалист дурного юмора (с) и автор канала о прекрасном @dlyarai: «Колье из хрустальной матовой гальки на красной вощеной нити с завязками. Не боится воды. Ama jewelry, молодой российский бренд. Подходит как м, так и ж».
- Александр Кулиш, путешественник со стажем и автор канала @Gtrotter: «В моем листе хотелок – несколько керамических плиток из серии Луи Бартелеми «Египтомания», которая выпущена британским брендом товаров для ванной Balineum. Я в восторге от того, что делает Бартелеми в разных форматах – вышивке, коврах, муралах, одежде, и вот теперь керамике. Ну а о Египте, тем более таком идеализированном, приятно думать зимой – согревает».
- Онлайн-журнал @myhandbook в лице его редактора Лены Алексеевой: «В моём личном виш-листе сыворотка для лица SS01 Secret Sauce бренда The Beauty Sandwich, созданного любимцем Голливуда и красивым человеком Иваном Полом. Уже 15 лет его руки подтягивают и скульптурируют самые известные лица по обе стороны Атлантики. Фирменная массажная процедура Ивана получила развитие в "соусах" из органических ингредиентов, которые, по его мнению, являются лучшим вкладом в долголетие кожи. Ну как не хотеть такой подарок под ёлочку?»
- Ульян Евтеев, автор канала про историю транспорта через призму моды и искусства @voyage_transport: «В Санкт-Петербурге есть мастерская "Красивое стекло", где делают красивейшие калейдоскопы. Выбор у них огромный, но мой фаворит – это, конечно, коллекция "Ретротранспорт"! Кстати, а вы знаете, что рассматривание чудо-трубы полезно для глаз и нервов? Так что, если хотите на Новый Год совместить приятное с полезным, – подумайте о калейдоскопах».
- Юра Скрелин, автор канала о модернизме в архитектуре и дизайне @midcenturymodern: «Мы к вам, как всегда, с книжными новинками об архитектуре. Через три года после выхода путеводителя по новейшей архитектуре Санкт-Петербурга наша добрая коллега Анна Мартовицкая в соавторстве с Юлией Шишаловой опубликовала аналогичный путеводитель по современным постройкам Москвы. Каждая из этих книг станет прекрасным подарком для любителей архитектуры, а обе - просто double rainbow, oh my God!»