Мы пытаемся оценить осуществимость этой идеи:
У нас есть довольно большой стек объектов HasTraits в программе моделирования. Например, если мы моделируем два материала, мы можем получить доступ к их различным атрибутам с помощью:
Layer.Material1.Shell.index_of_refraction
Layer.Material5.Medium.index_of_refraction
Мы использовали этот код для симуляций, где мы просто увеличивали значения признака. Например, мы могли бы запустить симуляцию, где index_of_refraction одного из этих материалов изменяется от 1,3 до 1,6 в течение 10 итераций. Это на самом деле работает довольно хорошо.
Проблема заключается в выборе желаемых признаков для моделирования. Пользователи не будут знать все эти имена переменных трейтов, поэтому мы хотели представить иерархическое/древовидное представление всей структуры трейтов программы. Для двух вышеуказанных признаков это может выглядеть так:
Layer
- Material1
- Shell
- index_of_refraction
- Material2
- Medium
- index_of_refraction
И т.д...
Я знаю, что traitsui поддерживает TreeEditors, но есть ли примеры создания TreeEditor на основе проверки стека HasTraits, подобного этому? Каков самый простой способ получить стек признаков из объекта? По сути, эта идея осуществима или мне следует вернуться к чертежной доске?
Спасибо