小编Yve*_*rel的帖子

如何使用View避免内存泄漏

使用以下程序:

from traits.api import HasTraits, Int, Instance
from traitsui.api import View

class NewView(View):
    def __del__(self):
        print('deleting NewView')

class A(HasTraits):
    new_view = Instance(NewView)
    def __del__(self):
        print('deleting {}'.format(self))

    a = Int

    def default_traits_view(self):
        new_view = NewView('a')
        return new_view
Run Code Online (Sandbox Code Playgroud)

赛跑

a = A()
del(a)
Run Code Online (Sandbox Code Playgroud)

回报

 deleting <__main__.A object at 0x12a016a70>
Run Code Online (Sandbox Code Playgroud)

正如它应该.

如果我做

a = A()
a.configure_traits()
Run Code Online (Sandbox Code Playgroud)

关闭对话框后:

del(a)
Run Code Online (Sandbox Code Playgroud)

我有同样的信息:

deleting <__main__.A object at 0x12a016650>
Run Code Online (Sandbox Code Playgroud)

没有提到要删除的NewView.

在Geneal中,使用Traits和TraitsUI避免内存泄漏的良好做法是什么?

enthought traitsui

5
推荐指数
1
解决办法
93
查看次数

如何更改 Enum 可能的值

以下代码不起作用:

from traits.api import HasTraits,  Enum

class A(HasTraits):

    enum = Enum(1,2,3)

class B(A):

    def __init__(self):
        self.trait('enum').default_value = ['one','two','three']

b = B()
b.configure_traits()
Run Code Online (Sandbox Code Playgroud)

下拉列表中没有选择['一','二','三'],它仍然是[1,2,3]。有没有办法在声明一次后以任何方式修改枚举内容?

traits enthought

3
推荐指数
1
解决办法
5061
查看次数

楼层功能错误

floor(-1e-14 % 2)
Out[1]: 1.0

floor(-1e-16 % 2)
Out[2]: 2.0
Run Code Online (Sandbox Code Playgroud)

我明白这-1e-16可能太靠近了0,但% 2操作后的地板结果绝对不应该是2(0或1)!

python

2
推荐指数
1
解决办法
138
查看次数

标签 统计

enthought ×2

python ×1

traits ×1

traitsui ×1