Установить свойства виджета в 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
ФУТБОЛКА «СКОРОСТЬ ДРИФТА» | ОФИЦИАЛЬНЫЙ МЕРЧ | ZENLESS ZONE ZERO
⚡️Детали:
⭐ Релиз в КОНЦЕ МАЯ 2026
⭐Размеры: XS-XL
⭐Материал: 85% хлопок, 15% полиэстер
⭐ Всего 2 цвета на выбор: коричневый, черный
⭐ Больше фото и таблицы: тык
💱Цены: 4700 🪙 (рублей)
👻Доставка:
🅰️Цена указана С УЧЕТОМ доставки ДО РФ
✉️Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💱Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
🅰️ Товар на сайте: тык
#ZZZ@astroknightshop
БЕЙСБОЛКА «СКОРОСТЬ ДРИФТА» | ОФИЦИАЛЬНЫЙ МЕРЧ | ZENLESS ZONE ZERO
⚡️Детали:
⭐ Релиз в КОНЦЕ МАЯ 2026
⭐Размеры: мужская 49-62 см; женская 47-60 см
⭐Материал: 100% полиэфирное волокно; подкладка козырька - 100% хлопок
⭐ Всего 5 видов на выбор: черная мужская с квадратными полями, черная женская с закругленными полями и круглым верхом, коричневая мужская с квадратными полями, коричневая женская с закругленными полями и круглым верхом, черная мужская с плоским козырьком и квадратным верхом
⭐ Больше фото и таблицы: тык
💱Цены: 3450 🪙 (рублей)
👻Доставка:
🅰️Цена указана С УЧЕТОМ доставки ДО РФ
✉️Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💱Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
🅰️ Товар на сайте: тык
#ZZZ@astroknightshop
ПЛЮШЕВАЯ ИГРУШКА-ПОДУШКА В ВИДЕ ОСЬМИНОГА АНГЕЛОВ НАВАЖДЕНИЯ | ОФИЦИАЛЬНЫЙ МЕРЧ | ZENLESS ZONE ZERO
⚡️Детали:
⭐ Релиз в КОНЦЕ СЕНТЯБРЯ 2026
⭐Материал: 100% полиэфирное волокно
⭐Размер: 40 см
💱Цены: 5550 🪙 (рублей)
👻Доставка:
🅰️Цена указана С УЧЕТОМ доставки ДО РФ
✉️Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💱Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
🅰️ Товар на сайте: тык
#ZZZ@astroknightshop
ПЛЮШЕВАЯ ИГРУШКА-ПОДУШКА В ВИДЕ БАНБУ АНГЕЛОВ НАВАЖДЕНИЯ | ОФИЦИАЛЬНЫЙ МЕРЧ | ZENLESS ZONE ZERO
⚡️Детали:
⭐ Релиз в КОНЦЕ СЕНТЯБРЯ 2026
⭐Материал: 100% полиэстер; наполнитель - 87% полиэстер, 13% полипропилен
⭐Размер: 40 см
💱Цены: 5550 🪙 (рублей)
👻Доставка:
🅰️Цена указана С УЧЕТОМ доставки ДО РФ
✉️Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💱Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
🅰️ Товар на сайте: тык
#ZZZ@astroknightshop
КРЕПЯЩИЙСЯ СВЕТИЛЬНИК-ВЫВЕСКА | ОФИЦИАЛЬНЫЙ МЕРЧ | ZENLESS ZONE ZERO
⚡️Детали:
⭐ Релиз в КОНЦЕИЮЛЯ2026
⭐Размер: 46х40х17 мм
⭐ Всего 3 стиля на выбор: магазин Yum Cha Sin, минимаркет 141, San-Z-студия
💱Цена: 1400 🪙 (рублей)
👻Доставка:
🅰️Цена указана С УЧЕТОМ доставки ДО РФ
✉️Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💱Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
🅰️ Товар на сайте: тык
#ZZZ@astroknightshop
МЕТАЛЛИЧЕСКИЕ ПИНЫ С ФРАКЦИЯМИ VOL.4 | ОФИЦИАЛЬНЫЙ МЕРЧ | ZENLESS ZONE ZERO
⚡️Детали:
⭐ Релиз в КОНЦЕИЮЛЯ2026
⭐Размер: Школа горы Юнькуй - 52х38 мм; Хижина Кошмаров - 52х53 мм; Надзорная служба Крампус - 53,5х49 мм
⭐ Vol. 1 - тут
⭐ Vol. 2 - тут
⭐ Vol. 3 - тут
⭐ Всего 3 стиля на выбор
💱Цена: 1100 🪙 (рублей)
👻Доставка:
🅰️Цена указана С УЧЕТОМ доставки ДО РФ
✉️Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💱Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
🅰️ Товар на сайте: тык
#ZZZ@astroknightshop
БЫСТРОЗАРЯЖАЕМЫЙ ПОРТАТИВНЫЙ АККУМУЛЯТОР С РАСШИРЯЕМОЙ ЕМКОСТЬЮ | ОФИЦИАЛЬНЫЙ МЕРЧ | ZENLESS ZONE ZERO
⚡️Детали:
⭐ Релиз в КОНЦЕ МАЯ 2026
⭐Размер: полный комплект 80,4х28х116 мм; зарядный модуль 80,4х28х66,5 мм; модуль расширения 80,4х28х43,6 мм
⭐ Материал: огнестойкий пластик
⭐Номинальная емкость: 8400 мАч (5В-3А)
⭐Максимальная мощность зарядки: 22,5 Вт
⭐ Технические характеристики: Вход USB-C: 5В-3А, 9В-2А, 12В-1,5А, макс. мощность 18 Вт; Выход USB-C: 5В-3А, 9В-2,22А, 10В-2,25А, 12В-1,67А, макс. мощность 22,5 Вт
⭐Всего 2 цвета (емкость 10000 мАч) на выбор: серый и черный
⭐Всего 2 цвета (емкость 5000 мАч) на выбор: серый и оранжевый
⭐Всего 4 цвета (емкость 10000 мАч + 5000 мАч) на выбор: черно-оранжевый, черно-серый, серо-оранжевый и двойной серый
⭐ В подарок к комплекту аккумуляторов идет сумка для хранения
⭐ Присутствует китайская сертификация ССС
⭐ Детали: тык
💱Цены:
➖ Емкость 5000 мАч 3550 🪙 (рублей)
➖ Емкость 10000 мАч 6200 🪙 (рублей)
➖ Емкость 10000 мАч + 5000 мАч 8700 🪙 (рублей)
👻Доставка:
🅰️Цена указана С УЧЕТОМ доставки ДО РФ
✉️Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💱Купить:
🅰️@astroknight_bot
🅰️С реальными менеджерами
#ZZZ@astroknightshop
УДЛИНЯЕМЫЙ КАБЕЛЬ ДЛЯ БЫСТРОЙ ЗАРЯДКИ И ПЕРЕДАЧИ ДАННЫХ | ОФИЦИАЛЬНЫЙ МЕРЧ | ZENLESS ZONE ZERO
⚡️Детали:
⭐ Релиз в КОНЦЕ МАЯ 2026
⭐Размер: короткий - 18 см; длинный - 1 м
⭐Питание: Type-C, макс. мощность 240 Вт
⭐ Технические характеристики: Type-C-Type-C; Рабочее напряжение от -5В до 48В; Макс. ток - 5В; Скорость передачи данных - -= 480 Мбит/с
⭐Всего 2 цвета на выбор: оранжевый и черный
⭐ Детали: тык
💱Цены:
➖ Кабель 18 см 1900 🪙 (рублей)
➖ Кабель 1 м 2800 🪙 (рублей)
➖ Кабель 18 см + 1 м 3850 🪙 (рублей)
👻Доставка:
🅰️Цена указана С УЧЕТОМ доставки ДО РФ
✉️Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💱Купить:
🅰️@astroknight_bot
🅰️С реальными менеджерами
#ZZZ@astroknightshop