我在尝试动态初始化Traits范围对象时遇到了困难。在
下面的代码是一个非常简单的示例,但遗憾的是,由于以下类型错误而失败:
TypeError: unsupported operand type(s) for -: 'int' and '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(低=0,high=10),那么代码就可以工作了,但是当然,我没有得到我要寻找的Range的high参数的动态初始化。在
所有的建议都接受了。在
*在乔纳森回复后编辑*
以下是利用乔纳森的有用建议对我的问题给出的简单解决方案:
^{pr2}$
你正在经历一个TraitsUI错误:
解决办法是为低端产品创造另一个特点:
或者使用@JonathanMarch的解决方案。:)
一种方法是不以通常的方式定义特征,而是在
__init__
内定义,因此:见http://docs.enthought.com/traits/traits_user_manual/advanced.html#per-object-trait-attributes
相关问题 更多 >
编程相关推荐