0

RangeEditor内で正しく動作しない動作に遭遇しましたTableEditor

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 に答える