0

我遇到了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 的发展而得到修复。但是有一个简单的解决方法吗?

4

1 回答 1

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()
于 2013-11-13T22:37:35.607 回答