【发布时间】:2015-02-09 05:29:54
【问题描述】:
我在尝试动态初始化 Traits Range 对象时遇到问题。
以下代码是我正在尝试做的一个非常简单的示例,但遗憾的是失败并出现以下类型错误:
TypeError: 不支持的操作数类型 -: 'int' 和 'code'
from traits.api import HasTraits, Int, Range
from traitsui.api import View, Item
class DynamicRange(HasTraits):
"""Dynamic initialisation of a Range object"""
N = Int()
R = Range(low=0, high='N')
traits_view = View(Item('R'), Item('N'))
def __init__(self, N):
self.N = N # initial parameter value for N
def _N_default(self):
return self.N
Robject = DynamicRange(N=10)
Robject.configure_traits()
如果我将“R”的定义替换为:R = Range(low=0, high=10),则代码有效,但是当然我没有得到动态初始化我正在寻找的 Range 的高参数。
感激地接受所有建议。
* Jonathan 回复后编辑 *
以下是使用 Jonathan 的有用建议对我的问题的简单解决方案:
from traits.api import HasTraits, Range
from traitsui.api import View, Item
class DynamicRange(HasTraits):
"""Dynamic initialisation of a Range object"""
traits_view = View(Item('R'))
def __init__(self, N):
self.add_trait("R", Range(0, N))
Robject = DynamicRange(N=30)
Robject.configure_traits()
【问题讨论】:
标签: python range enthought traitsui