Multi Object View Behavior - Создание редактора для подкласса HasTraits
В настоящее время я пытаюсь создать графический интерфейс traitsUI для класса, который содержит много экземпляров одного объекта. Моя проблема очень похожа на ту, что решена в примере TraitsUI MultiObjectView.
Тем не менее, мне не нравится идея использования контекста, поскольку она требует от меня много раз выписывать одно и то же представление для каждого объекта, который у меня есть (и у меня может быть много). Поэтому я попытался отредактировать код так, чтобы каждый объект Instance of 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()
1 ответ
Будет ли что-то вроде этой работы? Это немного упрощает вещи и дает вам представление, которое содержит список представлений для ваших домов.
# 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')
)
)
class Houses(HasTraits):
house1 = House()
house2= House()
house3 = House()
traits_view =View(
Group(
Item('house1', editor=InstanceEditor(), style='custom'),
Item('house2', editor=InstanceEditor(), style='custom'),
Item('house3', editor=InstanceEditor(), style='custom')
)
)
if __name__ == '__main__':
hs = Houses()
hs.configure_traits()