В настоящее время я пытаюсь создать графический интерфейс traitsUI для класса, который содержит множество экземпляров одного объекта. Моя проблема очень похожа на ту, что решена в MultiObjectView Пример пользовательского интерфейса черты.
Однако мне не нравится идея использования контекста, так как это требует от меня записи одного и того же представления много раз для каждого объекта, который у меня есть (а у меня может быть много). Поэтому я попытался отредактировать код, чтобы каждый экземпляр объекта House по умолчанию выглядел как его обычный вид, когда он просматривается из объекта Houses. Это почти сработало, за исключением того, что теперь у меня есть кнопка, которая переводит меня к нужному мне представлению, а не к просмотру представлений, вложенных в одно окно (например, вывод примера TraitsUI выше).
Есть ли способ адаптировать приведенное ниже, чтобы получить желаемый результат? Я думаю, что мне нужно дополнительно отредактировать функцию create_editor, но я могу найти очень мало документации по этому поводу - только много ссылок на разные фабрики редакторов черт...
Спасибо,
Тим
# multi_object_view.py -- Sample code to show multi-object view
# with context
from traits.api import HasTraits, Str, Int, Bool
from traitsui.api import View, Group, Item,InstanceEditor
# Sample class
class House(HasTraits):
address = Str
bedrooms = Int
pool = Bool
price = Int
traits_view =View(
Group(Item('address'), Item('bedrooms'), Item('pool'), Item('price'))
)
def create_editor(self):
""" Returns the default traits UI editor for this type of trait.
"""
return InstanceEditor(view='traits_view')
class Houses(HasTraits):
house1 = House()
house2= House()
house3 = House()
traits_view =View(
Group(Item('house1',editor = house1.create_editor()), Item('house2',editor = house1.create_editor()), Item('house3',editor = house1.create_editor()))
)
hs = Houses()
hs.configure_traits()