Установить свойства виджета в 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
💥DSR презентовала инновационные решения в Барселоне
Наша компания приняла участие во встрече членов Connectivity Standards Alliance (CSA) в Барселоне 10–13 ноября.
На мероприятии DSR представила две разработки:
• Ambient Sensing — технологию на основе искусственного интеллекта, которая использует радиосигналы для определения движения и изменений в окружающей среде.
• X-to-Matter Bridge — решение, позволяющее подключать устройства вне стандарта Matter к экосистеме Matter.
👨💻Руководитель направления IoT в DSR Владимир Степанченко отметил:
«Встреча членов альянса CSA — это отличная возможность обменяться опытом, обсудить технологические тренды и реальные кейсы, а также найти новые идеи для развития решений DSR».
📝DSR является членом Альянса стандартов подключения (CSA) с 2012 года и продолжает вносить вклад в развитие стандартов для умных устройств и Интернета вещей.
#DSR#CSA#IoT
🏆DSR Corporation получила 4 престижные награды от CSA
Компания с 2012 года активно участвует в работе Альянса стандартов подключения (The Connectivity Standards Alliance), внося особенно значительный вклад в развитие беспроводного протокола Zigbee. Представители DSR активно участвовали в работе Альянса - выступали модераторами и проводили дискуссии.
👉Подробнее рассказываем здесь!
🎉За выдающийся вклад в деятельность рабочих групп CSA были отмечены:
✅Евгения Пешкова, President
✅Артём Вакулин, Senior Software Embedded Engineer
✅Евгений Эксаревский, Principal Software Architect
✅Владимир Степанченко, Wireless Products Manager
Мы гордимся своим участием в разработке технологий для умных домов и IoT-устройств, таких как стек Zigbee и фреймворк zHome. Присоединяйтесь к нам, чтобы стать частью команды профессионалов! 👀
#DSRCorporation#CSA#Zigbee#IoT#DSR_team
💥 Престижные награды на CSA Member Meeting в Будапеште!
Спешим поделиться новостями!
Недавно Евгения Пешкова, президент компании DSR Corporation, и Александр Щербаков, руководитель бизнес-подразделения децентрализованных систем, получили награды Outstanding Contributor Award от Connectivity Standards Alliance!
🏆Евгения Пешкова была отмечена за вклад в развитие протокола Zigbee.
🏆Александр Щербаков был награжден за ключевую роль в развитии Matter DCL.
Гордимся тем, что профессиональное сообщество вновь признало высокий уровень экспертизы DSR на международной арене!
🗣Альянс стандартов подключения (The Connectivity Standards Alliance) — это сообщество компаний, работающих над развитием, техническими спецификациями и продвижением стандартов беспроводной связи для умных домов и IoT-устройств.
❗️DSR Corporation с 2012 года активно участвует в работе Альянса стандартов подключения (CSA) и играет важную роль в развитии беспроводного протокола Zigbee.
#CSA#награды#децентрализованные_системы#DSR_team
Приготовьтесь к глубокому анализу и захватывающим комментариям: представляем наших кастеров! 🎙
Всё начнется уже завтра! Подписывайся на наши каналы, чтобы смотреть трансляции онлайн:
📺 YT PUBG MOBILE Киберспорт
📺VK PUBG MOBILE Киберспорт
📺YT PUBG MOBILE СНГ
📺TG PUBG MOBILE
#PMSL#CSA#PMSLCSA#PMSLCSA2024#PUBGMOBILE
Команды из СНГ поднимаются все выше!
Борьба за выход в финал накаляется всё сильнее!
Ключевой день для многих команд, подключайся к 5 игровому дню 3 игровой недели, и переживай эти эмоции вместе с нами!
Завершающие схватки стадии лиги!
📺 YT PUBG MOBILE СНГ
#PMSL#CSA#PMSLCSA#PMSLFALL#PMSLCSA2024#PUBGMOBILE
Команды из СНГ поднимаются все выше и ты можешь стать свидетелем их триумфа!
Ждем тебя на трансляции 3 дня 3 недели осеннего сезона PMSL CSA 2024 в 14:00 по МСК.
📺YT PUBG MOBILE Киберспорт
📺 VK PUBG MOBILE Киберспорт
📺 YT PUBG MOBILE СНГ
📺 TG PUBG MOBILE
📺 RT PUBG MOBILE СНГ
📺 TW PUBG MOBILE RU
#PMSL#CSA#PMSLCSA#PMSLFALL#PMSLCSA2024#PUBGMOBILE
Они сражаются за право быть лучшим! Топовые игроки, 6 матчей и одна мечта - стать чемпионом!
Ждем тебя сегодня в 14:00 по МСК
📺 YT PUBG MOBILE Киберспорт
📺 VK PUBG MOBILE Киберспорт
📺 YT PUBG MOBILE СНГ
📺 TG PUBG MOBILE
📺 RT PUBG MOBILE СНГ
📺 TW PUBG MOBILE RU
#PMSL#CSA#PMSLCSA#PMSLFALL#PMSLCSA2024#PUBGMOBILE
Впереди последняя неделя отборочного этапа осеннего сезона 2024 PMSL CSA. Страсти накалены, соперничество на максимум!
Ждем тебя сегодня в 14:00 по МСК!
📺 YT PUBG MOBILE Киберспорт
📺 VK PUBG MOBILE Киберспорт
📺 YT PUBG MOBILE СНГ
📺 TG PUBG MOBILE
📺 RT PUBG MOBILE СНГ
📺 TW PUBG MOBILE RU
#PMSL#CSA#PMSLCSA#PMSLFALL#PMSLCSA2024#PUBGMOBILE
Последний день 2 недели вот-вот начнется и уже скоро мы узнаем, какая команда займет лидирующие позиции.
Ждем тебя в 14:00 по МСК на наших трансляциях.
📺 YT PUBG MOBILE Киберспорт
📺 VK PUBG MOBILE Киберспорт
📺 YT PUBG MOBILE СНГ
📺 TG PUBG MOBILE
📺 RT PUBG MOBILE СНГ
📺 TW PUBG MOBILE RU
#PMSL#CSA#PMSLCSA#PMSLFALL#PMSLCSA2024#PUBGMOBILE
Отличные новости, фанаты PUBG MOBILE!🎉
Сегодня в 14:00 по МСК возвращаются матчи PMSL CSA Fall!
Не пропусти захватывающий экшн — увидимся на трансляции! 🔥
📺 YT PUBG MOBILE Киберспорт
📺 VK PUBG MOBILE Киберспорт
📺 YT PUBG MOBILE СНГ
📺 TG PUBG MOBILE
📺 RT PUBG MOBILE СНГ
📺 TW PUBG MOBILE RU
#PMSL#CSA#PMSLCSA#PMSLFALL#PMSLCSA2024#PUBGMOBILE
Осенний сезон 2024 PMSL CSA - это событие, где титаны и легенды противостоят друг другу за право вывести свой регион в ТОП. Ждем тебя на первом дне второй недели уже сегодня в 14:00 по МСК!
📺 YT PUBG MOBILE Киберспорт
📺VK PUBG MOBILE Киберспорт
📺YT PUBG MOBILE СНГ
📺TG PUBG MOBILE
📺RUTUBE PUBG MOBILE СНГ
📺TWITCH PUBG MOBILE RU
#PMSL#CSA#PMSLCSA#PMSLFALL#PMSLCSA2024#PUBGMOBILE
⚡️Игра может измениться в мгновение ока. Кто обладает силой продолжать борьбу? 🚀
2024 PMSL CSA Fall 1 Неделя День 5 – в прямом эфире!
📺 YT PUBG MOBILE Киберспорт
📺VK PUBG MOBILE Киберспорт
📺YT PUBG MOBILE СНГ
📺TG PUBG MOBILE
#PMSL#CSA#PMSLCSA#PMSLFALL#PMSLCSA2024#PUBGMOBILE