TableEditor无法更新正确的范围

时间:2013-11-13 21:24:36

标签: traits enthought traitsui

我发现RangeEditorTableEditor内无效的行为。

from traits.api import *
from traitsui.api import *

class TableItem(HasTraits):
    r=Range(1,6)

class Table(HasTraits):
    t=List(Instance(TableItem))
    def _t_default(self):
        return [TableItem()]

    traits_view=View(
        Item(name='t',
            editor=TableEditor( columns=[
                ObjectColumn(label='Number',editor=RangeEditor(mode='spinner'),
                name='r',editable=True)
            ]
        ),height=250,width=250,show_label=False))

Table().configure_traits()

此程序产生的行为是范围只能在0和1之间调整。如果未指定mode='spinner',则表示范围是0到1之间的浮点数。当然,在上面例如,只要范围设置为0,就会吐出错误,因为特征不接受区间[1,6]以外的任何值。

这种行为非常明显是一个错误,并且随着enaml向前推进,可能无法修复。但是有一个简单的解决方法吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决方法:

from traits.api import *
from traitsui.api import *

class TableItem(HasTraits):
    r=Range(1,6)
    _integer_value_one=Constant(1)
    _integer_value_six=Constant(6)

class Table(HasTraits):
    t=List(Instance(TableItem))
    def _t_default(self):
        return [TableItem()]

    traits_view=View(
        Item(name='t',
            editor=TableEditor( columns=[
                ObjectColumn(label='Number',editor=RangeEditor(mode='spinner',
                    high_name='_integer_value_six',low_name='_integer_value_one'),
                name='r',editable=True)
            ]
        ),height=250,width=250,show_label=False))

Table().configure_traits()