Установить свойства виджета в 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
⚡️Команда BIMTeam ищет Координатора по технологиям информационного моделирования, направление Генплан
Мы — ПИК Digital (часть ГК ПАО "ПИК СЗ"), ИТ-компания, которая превращает строительство в высокотехнологичную отрасль. Наши решения охватывают все этапы: от проектирования и производства материалов до строительства, финансов и продаж.
⚪️ Обязанности
▪️Поддержка пользователей (инженеров-проектировщиков) по общим вопросам;
▪️Поддержка пользователей по дисциплинарным опросам (ГП/НС);
▪️Консультация пользователей по работе Civil 3D, AutoCAD и внутренних плагинов;
▪️Тестирование и анализ работоспособности Civil 3D, AutoCAD и внутренних плагинов;
▪️Выполнение поручений по проектам развития сервиса/группы;
▪️Разработка инструкций и учебных материалов;
▪️Разработка семейств / блоков;
▪️Диспетчеризация входящих обращений
⚪️Условия
▪️Удалённый формат работы
▪️Льготные программы от партнёров
▪️Корпоративная техника и частичное ДМС
▪️Крутое комьюнити экспертов в BIM и digital-строительстве
✅Хотите делать строительство технологичным? Присылайте резюме @IrinaApeshina!
#BIMTeam#ПИК#Генплан
⚡️BIM Форум 2025 - наши эксперты рассказали о системе проверки модели на соответствие BIM-требованиям BIM Inspector
Главные инсайты:
▪️Мы заметили, что 70% компаний тратят время на разработку собственных инструментов вместо использования готовых решений, что создает большой потенциал для экономии времени
▪️Мы увидели растущий запрос на экосистемные решения в BIM
▪️Лучше всего сработала демонстрация конкретной экономии времени:
когда мы показывали, как плагин экономит 2 часа на типовой операции
➡️ Какую рутину вы бы хотели автоматизировать в первую очередь?
➡️ Что для вас главное препятствие в автоматизации процессов?
Оставляйте ваши вопросы в комментариях под постом⤵️
Спасибо @bimforumpro за крутую организацию! И отдельно - участникам за внимание и крутые вопросы
#БИМФорум2025#ПИК#BIMTeam
⚡️Cnews про BIM inspector
Написали как мы сократили время поиска ответов в базе инструкций и пользовательской документации с 30 до 5 минут, а адаптацию новых пользователей — с 2–4 недель до 3–5 дней. Таких результатов удалось достичь по итогам запуска ИИ-помощника для пользователей BIM Inspector.
⚪️Читать новость
⚪️Читать подробную статью на Habr
#ПИК#BIMTeam#ИИ#BIMInspector
🔔Большеинструментов — больше возможностей!
Мы активно расширяем набор инструментов, чтобы работа в Revit была быстрее и удобнее.
И сейчас в нашем арсенале уже более 15 полезных инструментов, 12 из которых доступны абсолютно бесплатно🔥
С их помощью вы можете:
🔘копировать листы внутри проекта с различными настройками, переименовывать их, перенумеровывать
🔘пакетно печатать листы разных форматов в PDF из текущего и связанных файлов
🔘изменять опорный уровень у элементов без их смещения
🔘задавать нумерацию элементов в спецификациях
🔘экспортировать спецификации в Excel
🔘заполнять количество изменений в штампах листа и изменения в ведомостях рабочих комплектов
🔘экспортировать листы в DWG
🔘управлять видимостью связей на видах и шаблонах
🔘заменять тип осей с 2D на 3D и наоборот
🔘пакетно добавлять/удалять параметры в проекте, копировать их между семействами/проектами
🔘находить и очищать проект от ненужных dwg и dxf импортов
🔘гибко выбирать элементы по значениям параметров
🔘создавать рабочие наборы
🔘обрезать вид по прямоугольной области
✅ Также, вы можете заполнять параметры элементов на основе значений других параметров и расчетных формул
то есть гибко задавать в какие элементы, в какой параметр и что именно должно быть записано
Инструменты на практике
⏺ Установите PikToolsBox (кнопка "Скачать" на странице продукта) и далее загрузите сборку Общее-Revit
Пробный период для платных решений на 3 месяца
⏺Оставьте заявку
#Revit#BIM#ПИК#BIMTeam
Попробуй бесплатно плагины PikTools!
🥳PikTools - инструменты для автоматизации проектирования в Revit, AutoCAD&Civil3D
В составе бесплатного пакета для Revit:
🔸Опорный уровень - изменение опорного уровня элементов без их фактического смещения
🔸Диспетчер параметров - комплексная работа с параметрами, пакетное добавление в проект и в семейство
🔸Экспорт в Excel - пакетный экспорт спецификаций из Revit в XLSX и TSV
🔸Фильтр - гибкая фильтрация элементов по выбранным параметрам и их значениям
🔸Перенумеровать листы - изменение номера листов в проекте
🔸Оси 2D/3D - пакетная замена режима осей на виде с 2D на 3D и обратно
🔸Ревизии - автозаполнение количества изменений в штампах листа и изменений в ведомостях рабочих комплектов чертежей
🔸CAD менеджер - поиск и удаление импортированных DWG-файлов в проектах Revit
Подробнее на нашем сайте
Инструкции
Скачать бесплатно
#Revit#BIM#ПИК#BIMTeam
Полезная подборка курсов для проектировщиков и BIM-специалистов от команды BIMTeam 🟧
⚪️C#. Автоматизация проектирования в Autodesk Revit
➡️Ссылка на курс
➡️Промокод на 25% до 1 мая - BIMTEAM25
Курс будет полезен bim-специалистам, проектировщикам и начинающим разработчикам, желающим освоить навыки программирования на языке С# для автоматизации проектирования в ПО Autodesk Revit
⚪️Проектирование генплана в Civil 3D
➡️Ссылка на курс
Этот курс поможет вам познакомиться с принципами работы в Civil 3D, а также начать использовать основные инструменты и функции программы для решения типовых задач при проектировании генплана.
⚪️Технология моделирования в Revit. Базовый уровень
➡️Ссылка на курс
Бесплатный обучающий курс помогает изучить инструменты, возможности и способы решения типовых задач в Autodesk Revit Чтобы понять принципы и функции работы в ПО на базовом уровне, в курсе разбираются примеры разделов АР и КР как наиболее универсальные для специалистов всех разделов проектирования.
⚪️Family Manager. Обзор функционала
➡️Ссылка на курс
Family Manager - система для управления библиотеками компонентов. Позволяет быстро находить и размещать семейства, управлять стандартом и библиотекой семейств как единым целым, контролировать их использование в проекте. Бесплатный курс посвящен системной работе в Family Manager. Вы узнаете, как устроена и как взаимодействует каждая часть системы. Идеально для специалистов, желающих вывести управление компонентами на новый уровень.
Как устроен процесс проверки моделей
#ПИК#BIMTeam#Курс#BIM
Полина Павлова и Станислав Пуртов выступили на форуме «Движение» в Сочи, где рассказали о экосистеме, которую мы создаём для наших проектировщиков.
Мероприятие поражает масштабом, уровнем аудитории и атмосферой развития, которая здесь царит несколько дней форума. Если вы ни разу не были, то рекомендуем однажды это сделать.
По горячим следам делимся материалами выступления:
🔘Презентация
🧡Бесплатный пакет плагинов
🔘Tg-канал
🔘ВК-сообщество
#ПИК#BIMTeam#форумДвижение
🆕Где встречаются дисциплины: история одного продукта
В статье рассказываем, как мы вывели междисциплинарные инструменты в отдельный продукт, какие были предпосылки для этого и что изменилось после
🔗 Читать по ссылке
✅Скачать пакет общих плагинов
#статья#BIMTeam#ПИК#PikTools
🔔Напоминание о вебинаре!
Не пропустите наш вебинар «Плагины против рутины - обзор решений».
📌Дата
23 октября 2025 г.
⏰Время
11:00 (МСК)
📍Формат
Трансляция в Telegram-канале PikTools. Общее
🔊Спикер
Дарья Попова, ТИМ-аналитик
📝На вебинаре разберём
🤩Возможности плагинов PikTools Общее
🤩Как они помогают выполнять задачи в Revit проще и быстрее
🤩Их применение на практике
✉️Регистрация на вебинар доступна по ссылке
*Ссылка на трансляцию будет отправлена на почту после регистрации
👍 До встречи!
#BIMTeam#вебинар#PikTools#Общее