Установить свойства виджета в 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
Как стало возможных внедрить автоматизированное планирование за три недели?
🧑💻Ответила на этот вопрос Елена Безрукова, Системный аналитик AXELOT
🗣 Если у вас остались вопросы, оставляйте комментарии под этим постом — будем рады ответить!
#Эксперты_AXELOT#TMS
📉 В результате внедрения системы управления транспортом (TMS) в компании ВсеИнструменты.ру, доля ручных операций сократилась с 90% в 2023 году до 10% в 2024 году. Директор по логистике Георгий Ким рассказал об этом на SCM Конгрессе. До автоматизации логистика компании в основном зависела от ручных процессов, что создавало риски монополизации, так как около 25-30% перевозок осуществлялись одним подрядчиком.
🚚 Прежние методы работы приводили к 100 сервисным нарушениям в месяц, что была серьёзной проблемой для компании, работающей в e-com-сегменте, где клиенты ожидают быструю и бесперебойную доставку. Ким подчеркнул, что для решения проблемы был выбран путь внутренней трансформации через аудит процессов и разработку собственной TMS, автоматизировавшей 34 параметра, включая контроль времени прибытия и проверку документов.
🔧 Новая система значительно упростила процесс управления, сократив количество метрик до критически важных показателей, что способствовало более эффективной работе. Председатель отметил, что отбор перевозчиков стал более строгим: из тысячи заявок сейчас одобряются лишь десятки. Это привело к снижению числа сервисных нарушений до 17 в месяц, а в летний период до 1-5, при одновременном увеличении пула контрагентов в три раза.
____
#ТисЛоджистик🦏
#Логистика
#Автоматизация
#TMS
Какую модель использования вы рекомендуете для решений класса RTVP?
🧑💻Ответил эксперт AXELOT: Андрей Заверткин, функциональный архитектор TMS
Получите консультацию от наших экспертов по продуктам AXELOT. Ставьте + в комментариях под постом или пишите в личные сообщения ✉️
#Эксперты_AXELOT#AXELOTTMS#TMS
Что стало первопричиной появления сервиса AXELOT RTVP?
🧑💻Ответил эксперт AXELOT: Заверткин Андрей, функциональный архитектор TMS
Ставьте реакции на пост🔥. Остались вопросы - задавайте их в комментариях под постом или пишите в личные сообщения✉️
#Эксперты_AXELOT#AXELOTTMS#TMS
26 августа 2021 в г.Алматы, Республика Казахстан состоялась ежегодная конференция “Логистика будущего”.
Логисты со всей страны встретились, чтобы обсудить текущие тренды по оптимизации своей деятельности. Партнеры и участники конференции – лидеры рынка складской и транспортной логистики.
Высокий интерес слушателей к традиционным AXELOTовским решениям #WMS, #TMS и #TOS был обусловлен не только развитием транспортно-логистического потенциала Республики Казахстан, но и введением системы обязательной маркировки на широкий перечень товарных групп.
Во второй части конференции была проведена экскурсия на один из наших объектов - складской комплекс ICEBERG ALMATY, который является самым крупным морозильным складом класса "А" в Центральной Азии общей площадью 47 000м2.
📢 Как контролировать транспортные затраты в AXELOT TMS X5?
🗣️ Рассказал специалист AXELOT Евплов Андрей, Функциональный архитектор
Остались вопросы? Пишите в комментариях под постом ⬇️
#Эксперты_AXELOT#TMS#транспортныезатраты
📢Как организовать комфортную работу водителя в AXELOT TMS и удержать сотрудника?
Ответили эксперты компании AXELOT - смотрите запись вебинара❗️
#вебинар#AXELOTTMS#TMS#эксперты_AXELOT
Почему так важна архивная функция TMS, которая относится скорее к системе операционного управления?
🗣️Ответила на этот вопрос Елена Безрукова, системный аналитик AXELOT
Получить ответы на вопросы по продуктам AXELOT и подобрать нужное решение можно через личные сообщения! Или ставьте + в комментариях под постом, мы с вами свяжемся⬇️
#AXELOT#TMS#грузоперевозки#совместимостьтоваров
📡 Может ли AXELOT TMS X5 помочь управлять рисками в транспортной логистике?
🧑💻Рассказал в видеоролике Олег Голядинец, менеджер по развитию ИТ-продукта.
Задавайте вопросы по возможностям AXELOT TMS в комментариях под постами⬇️
#AXELOT#AXELOTTMS#TMS#транспортнаялогистика
📢 Каким способом YMS может сгладить пики нагрузки на доки?
✔️ На этот вопрос ответил Сергей Шейко, руководитель отдела YMS
Ставьте реакции на пост 🔥 и задавайте свои вопросы нашим экспертам‼️
#Эксперты_AXELOT#YMS#TMS#WMS
📢Какие риски закладывают перевозчики на простой при проведении погрузо-разгрузочных работ?
На этот вопрос ответил Сергей Шейко, руководитель отдела YMS, в видео ✅
Ставьте реакции на пост 🔥 и задавайте свои вопросы нашим экспертам❗
#Эксперты_AXELOT#YMS#TMS#WMS