Установить свойства виджета в 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
Вьетнамцы устанавливают алтари для поклонения духам в офисах, чтобы с помощью традиционной магии повысить прибыльность бизнеса. Есть такое сакральное место и в «Ханой-Москва». Алтарь размещен в деревянном коробе с резными орнаментами — драконами, листьями и солярными символами. Он стоит на полу в месте, указанном мастером фэн-шуй, игнорируя удобство интерьера и симметрию.
Внутри короба — фарфоровые идолы, подставка с пятью стопками для алкоголя и блюдце для подношений (сигареты, ритуальные деньги, конфеты). Снаружи — курильница с ароматными палочками, поднос с фруктами и ваза с хризантемами. Ночью алтарь подсвечивают красными лампами.
Ежедневно специальный сотрудник проводит церемонию: подносит свежие фрукты, цветы и зажигает палочку. Расходы на алтарь никогда не сокращают, даже в кризис — это считается святотатством. В особые дни по лунно-солнечному календарю организуют расширенные ритуалы с участием владельца.
Для вьетнамцев важно поддерживать отношения с духами, демонами и призраками, соблюдая множество правил и исключений, подобно земным законам.
#ханоймосква#ханой#hanoimoscow#hanoi
Банкомат Азиатско-Тихоокеанского банка установили в ТЦ «Ханой-Москва» на -1 этаже рядом с супермаркетом «Пятерочка». Машина оснащена модулями выдачи и приема наличных, они предоставляют возможность осуществления платежей и подписки на дистанционное банковское обслуживание. По сути, он являются мини-офисом банка, позволяющими оказывать широкий спектр услуг клиентам - держателям карт международных платежных систем, а также всем покупателям.
✅Где: ТЦ «Ханой-Москва», - 1 этаж (рядом с супермаркетом «Пятерочка»)
Справка:
Азиатско-Тихоокеанский банк – один из крупнейших банков Дальнего Востока и Сибири с мультирегиональной сетью, работает на российском рынке с 1992 года.
АТБ обслуживает более 305 000 розничных и 30 000 корпоративных клиентов. Сеть банка охватывает 22 региона России. Головные офисы расположены в Благовещенске и Москве. В банке работает более 3 700 сотрудников. Чистые активы АТБ составляют 334,5 млрд рублей.
*Информационный пост, не является рекламой
#ханоймосква#ханой#hanoimoscow#hanoi
В Ханой-Москва стартовал традиционный пятничный КВИЗ, сегодня он проходит под грифом Новогодний! Команды пришли в традиционных праздничных нарядах и с роскошном настроением.
#ханоймосква#ханой#тцханоймосква#hanoimoscow#hanoi
А ещё в торговом центре установлена тематическая фотозона, на которой любой гость Ханой-Москва может запечатлеть себя на память 👻
#ханоймосква#ханой#тцханоймосква#hanoimoscow#hanoi#hanoimoscow
В Ханой-Москва стартовал традиционный пятничный КВИЗ ❤️ Команды начали сражение в интеллектуальной схватке! Пусть победят сильнейшие🤞
#ханоймосква ханой #тцханоймосква#hanoimoscow#hanoi#moscow
Злая, но красивая, ведьма украла таланты у артистов Цирка чудес, но маленькие гости Ханой-Москва помогут их вернуть!
#ханоймосква#тцханоймосква#hanoimoscow#hanoi#moscow
В Ханой-Москва стартовал традиционный пятничный КВИЗ, сегодня с приставкой РОК🤟 Желаем всем командам удачи и пусть победит сильнейший 🫶🫰
#ханоймосква#тцханоймосква#hanoimoscow#hanoi#moscow
А ещё в Ханой-Москва всегда можно нарисовать сакральный рисунок хной - мехенди, зашифровав послание ко Вселенной. Стоимость от 350 рублей.
#ханоймосква#тцханоймосква#hanoimoscow#hanoi#moscow
В Ханой-Москва пришла старая-добрая сказка! Малыши смотрят кукольный спектакль "Волк и семеро козлят" и находятся в предвкушение встречи с Бабой Ягой.
#ханоймосква#hanoimoscow#hanoi#moscow#ханой
Очаровательная Баба Яга приехала в Ханой-Москва, чтобы сварить волшебное зелье! Следим за магией 😍
#ханоймосква#ханой#тцханоймосква#hanoimoscow#hanoi#moscow
Параллельно шоу-программы "В гостях у сказки" маленьким гостям торгового центра наносят аэротату😍
#ханоймосква#ханой#тцханоймосква#hanoimoscow#hanoi#moscow