Установить свойства виджета в 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
🔔Большеинструментов — больше возможностей!
Мы активно расширяем набор инструментов, чтобы работа в 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
МЫ - Команда BIMTeam из ПИК, и мы создаем продукты, которые делают процессы BIM-моделирования проще и быстрее
🔍Наши ключевые продукты
Family Manager - помогает удобно управлять семействами в Revit без лишней рутины
✈️Подписаться на канал
PikTools - автоматизация в Revit
🤩АР
✈️Подписаться на канал
🤩КР
✈️Подписаться на канал
🤩ИОС
✈️Подписаться на канал
🤩Общее
✈️Подписаться на канал
RobotR2- Автоматизация градостроительного и архитектурного проектирования
✈️Подписаться на канал
BIM Inspector - проверяет модели на соответствие стандартам и сокращает количество ошибок
✈️Подписаться на канал
🔔Где ещё мы есть?
🤩Новости и обсуждения → Tg | VK | LinkedIn
🤩Официальный сайт → bimteam.ru
👍 Подписывайтесь на наши каналы и следите за новостями!
#BIM#Строительство#Revit#Цифровизация#Инновации
МЫ - Команда BIMTeam из ПИК, и мы создаем продукты, которые делают процессы BIM-моделирования проще и быстрее
🔍Наши ключевые продукты
Family Manager - помогает удобно управлять семействами в Revit без лишней рутины
✈️Подписаться на канал
PikTools - автоматизация в Revit
🤩АР
✈️Подписаться на канал
🤩КР
✈️Подписаться на канал
🤩ИОС
✈️Подписаться на канал
🤩Общее
✈️Подписаться на канал
RobotR2- Автоматизация градостроительного и архитектурного проектирования
✈️Подписаться на канал
BIM Inspector - проверяет модели на соответствие стандартам и сокращает количество ошибок
✈️Подписаться на канал
🔔Где ещё мы есть?
🤩Новости и обсуждения → Tg | VK | LinkedIn
🤩Официальный сайт → bimteam.ru
👍 Подписывайтесь на наши каналы и следите за новостями!
#BIM#Строительство#Revit#Цифровизация#Инновации
МЫ - Команда BIMTeam из ПИК, и мы создаем продукты, которые делают процессы BIM-моделирования проще и быстрее
🔍Наши ключевые продукты
Family Manager - помогает удобно управлять семействами в Revit без лишней рутины
✈️Подписаться на канал
PikTools - автоматизация в Revit
🤩АР
✈️Подписаться на канал
🤩КР
✈️Подписаться на канал
🤩ИОС
✈️Подписаться на канал
🤩Общее
✈️Подписаться на канал
RobotR2- Автоматизация градостроительного и архитектурного проектирования
✈️Подписаться на канал
BIM Inspector - проверяет модели на соответствие стандартам и сокращает количество ошибок
✈️Подписаться на канал
🔔Где ещё мы есть?
🤩Новости и обсуждения → Tg | VK | LinkedIn
🤩Официальный сайт → bimteam.ru
👍 Подписывайтесь на наши каналы и следите за новостями!
#BIM#Строительство#Revit#Цифровизация#Инновации
🐚🐚Новый плагин в составе бесплатного пакета PikTools
Экспорт в DWG - пакетный экспорт листов в DWG из нескольких файлов сразу, включая связанные файлы
Как установить
▪️Скачайте приложение PikToolsBOX
▪️Установите 🥰 PikTools. Общее
▪️Инструкции доступны по нажатию F1 при наведении курсора на плагин в Revit
✅Помощь и консультации по функционалу
▪️Чат поддержки
▪️Инструкция
#Revit#BIM#ПИК#BIMTeam#Плагины
🔔Собираем обратную связь
Месяц назад мы опубликовали плагин "Армировать по площади".
💜Поделитесь обратной связью в коротком опросе, для нас это будет очень полезно.
#Revit#BIM#ПИК#BIMTeam#Плагины
🆓Попробуйте бесплатно плагин PikTools
Колористика - новый плагин для назначения цвета фасадной плитке, работает с панелями витража.
Как установить
▪️Скачайте приложение 😆PikToolsBOX
▪️Установите 😍 PikTools. АР
▪️Инструкции доступны по нажатию F1 при наведении курсора на плагин в Revit
✅Помощь и консультации по функционалу
▪️Чат поддержки
▪️Инструкция
#Revit#BIM#ПИК#BIMTeam#Плагины
Попробуйте плагины PikTools для Revit от команды BIMTeam из ПИК!
↗️Бесплатныеплагины:
🤩Армироватьпо площади
Устанавливает армирование в плитах и стенах с использованием системного семейства "Армирование по площади"
🤩Опорный уровень
Изменение опорного уровня элементов без их фактического смещения
🤩Диспетчер параметров
Комплексная работа с параметрами, пакетное добавление в проект и в семейство
🤩Экспорт в Excel
Пакетный экспорт спецификаций из Revit в XLSX и TSV
🤩Фильтр
Гибкая фильтрация элементов по выбранным параметрам и их значениям
🤩Перенумеровать листы
Изменение номера листов в проекте
🤩Оси 2D/3D
Пакетная замена режима осей на виде с 2D на 3D и обратно
🤩Ревизии
Автозаполнение количества изменений в штампах листа и изменений в ведомостях рабочих комплектов чертежей
🤩CAD менеджер
Поиск и удаление импортированных DWG-файлов в проектах Revit
🤩Нумерация
Нумерация элементов в спецификациях
🤩Обрезатьвид
Подрезка 2D видов по выделенной области
↗️Пробный период 3 месяца:
🤩Перемычки
Автоматизация процесса расстановки перемычек в проекте, упрощение процесса их маркировки и создания эскизов
🤩Отделка
Рассчитывает площади отделки, назначает типы и марки отделки и создает ведомость отделки
🤩Склеить параметры
Быстро и безошибочно заполненяет параметры на основе значений других параметров и расчетных формул
🔍Как установить?
Скачайте приложение 😆PikToolsBOXи установите продукты:
😍 PikTools. АР
😀 PikTools. КР
🥰 PikTools. Общие
📝Инструкции
Инструкции доступны по нажатию F1 при наведении курсора на плагин в Revit
🔊Задать вопрос можно здесь
📌Наш бот-ассистентздесь
#Revit#BIM#ПИК#BIMTeam#Плагины
Все официальные каналы BIMTeam в одном месте⤵️
▪️BIMTeam News - https://t.me/bimteamnews
➡️ Здесь всё самое важное: обновления всех продуктов, анонсы и главные новости компании
▪️Family Manager - https://t.me/fm_bimteam
➡️ Всё для эффективной работы с семействами в Revit и AutoCAD
▪️BIM Inspector - https://t.me/bi_bimteam
➡️ Новости о сервисе по контролю качества BIM-моделей
▪️R2 - https://t.me/robotR2dev
➡️ Новости о платформе для автоматизации архитектурного и градостроительного проектирования
▪️PikTools АР - https://t.me/PikToolsAR
➡️ Всё для автоматизации bim-моделирования в Revit для архитекторов
▪️PikTools КР - https://t.me/PikToolsKR
➡️ Всё для автоматизации bim-моделирования в Revit для конструкторов
▪️PikTools ИОС - https://t.me/PikToolsIOS
➡️ Все для автоматизации bim-моделирования в Revit для инженеров ИОС
▪️PikTools Общее - https://t.me/PikToolsGeneral
➡️ Все для автоматизации bim-моделирования в Revit междисциплинарного характера
▪️Сообщество VK - https://vk.com/bimteamapps
➡️ Здесь анонсы, обсуждения и жизнь компании чуть ближе к вам
Выбирайте свой вариант и будьте на связи!
#BIMTeam#ПИК#Revit#Civil3D
🆕Новые плагины в составе бесплатного пакета PikTools
▪️Видимость связей - скрытие/отображение связанных файлов Revit на нескольких видах или шаблонах видов
▪️Создать рабочие наборы - создание рабочих наборов в проекте
Как установить
▪️Скачайте приложение PikToolsBOX
▪️Установите 🥰 PikTools. Общее
▪️Инструкции доступны по нажатию F1 при наведении курсора на плагин в Revit
✅Помощь и консультации по функционалу
▪️Чат поддержки
▪️Инструкция Видимость связей
▪️Инструкция Создать рабочие наборы
#Revit#BIM#ПИК#BIMTeam#НоваяФича
🆓Бесплатный пакет плагинов для Revit от BIMTeam
Предлагаем набор инструментов для автоматизации работы в Autodesk Revit. Все плагины бесплатны, не требуют лицензионных ключей и готовы к использованию сразу после установки.
В пакете:
▪️Управление параметрами и данными
▪️Автоматизация нумерации листов и элементов
▪️Экспорт спецификаций в Excel
▪️Инструменты для работы с видами, осями и связями
▪️Специализированные решения для армирования, фасадов и инженерных сетей
🔗Ссылка для скачивания
#BIM#Revit#BIMTeam#автоматизация#проектирование