Skip to content

Instantly share code, notes, and snippets.

@scott-maddox
Created July 16, 2019 17:20
Show Gist options
  • Save scott-maddox/2a984aba5e21f9ecc9c86ca0964baff4 to your computer and use it in GitHub Desktop.
Save scott-maddox/2a984aba5e21f9ecc9c86ca0964baff4 to your computer and use it in GitHub Desktop.
from traits.api import (HasTraits, Instance, Int, List, Property, Unicode,
on_trait_change)
from traitsui.api import HGroup, ModelView, UItem, View
COLUMNS_WIDTH = 200
class Case(HasTraits):
param1 = Unicode
param2 = Unicode
param3 = Unicode
param4 = Unicode
param5 = Unicode
param6 = Unicode
param7 = Unicode
class CaseView(ModelView):
traits_view = View(
'model.param1',
'model.param2',
'model.param3',
'model.param4',
'model.param5',
'model.param6',
'model.param7',
)
class Cases(HasTraits):
cases = List(Instance(Case))
class CasesView(ModelView):
model = Instance(Cases)
num_cases = Property(Int)
case_view_0 = Instance(CaseView, depends_on='model.cases')
case_view_1 = Instance(CaseView, depends_on='model.cases')
case_view_2 = Instance(CaseView, depends_on='model.cases')
traits_view = View(
HGroup(
UItem(
'case_view_0', style='custom', visible_when='num_cases > 0',
width=COLUMNS_WIDTH
),
UItem(
'case_view_1', style='custom', visible_when='num_cases > 1',
width=COLUMNS_WIDTH
),
UItem(
'case_view_2', style='custom', visible_when='num_cases > 2',
width=COLUMNS_WIDTH
),
),
scrollable=True,
resizable=True,
)
def _get_num_cases(self):
return len(self.model.cases)
@on_trait_change('model')
def set_views(self):
if len(self.model.cases) > 0:
self.case_view_0 = CaseView(model=self.model.cases[0])
if len(self.model.cases) > 1:
self.case_view_1 = CaseView(model=self.model.cases[1])
if len(self.model.cases) > 2:
self.case_view_2 = CaseView(model=self.model.cases[2])
# CaseView(model=Case()).configure_traits()
CasesView(model=Cases(cases=[Case(), Case(), Case()])).configure_traits()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment