Pte*_*ium 6 python constructor traits
我是python的新手 - 对不起,如果我的术语错了.我有一个继承了Enthought Traits属性的类.这是一个简化版本:
from enthought.traits.api import HasTraits, Range
from enthought.traits.ui.api import View, Item
class GUIThing(HasTraits):
my_slider = Range(0.0, 0.6, 0.1)
my_slider._high = 0.7 # works; not what I need 'coz not instance-dependent
view = View( Item('my_slider') )
def __init__(self, arg1):
# Call the parent's __init__
HasTraits.__init__(self)
self.my_slider._high = arg1 # what I need; doesn't work
# -- Main program -----
top_range = 0.9
my_gui = GUIThing(top_range)
my_gui.configure_traits()
Run Code Online (Sandbox Code Playgroud)
这只是创建一个带滑块的窗口,最初从0.0到0.6,初始值为0.1.创建GUIThing实例时,我想根据当前top_range值改变滑块的最大值.但行
self.my_slider._high = arg1
结果是
AttributeError: 'float' object has no attribute '_high'
在其中时__init__(),self.my_slider不返回滑块对象,而是返回滑块的当前值.
我究竟做错了什么?谢谢!
编辑:
以下也不起作用:
class GUIThing(HasTraits):
def __init__(self, arg1):
# Call the parent's __init__
HasTraits.__init__(self)
self.my_slider = Range(0.0, arg1, 0.0)
view = View( Item('my_slider') )
Run Code Online (Sandbox Code Playgroud)
这将是我正在尝试做的直接方式,但它导致GUI而不是滑块,有一个文本框,在0xa61946c处读取"enthought.traits.trait_types.Range对象".所以问题是当my_slider在__init__()"my_slider"中创建时,意味着对象本身(通过View无法正确显示); 但如果my_slider在外部创建,__init__()则"my_slider"将表示当前值(浮点数;这会阻止访问对象属性).
不确定这是Traits特有的还是我不知道如何正确初始化对象.
| 归档时间: |
|
| 查看次数: |
1060 次 |
| 最近记录: |