【问题标题】:trait pickling with configure_traits使用 configure_traits 进行特征酸洗
【发布时间】:2016-07-11 08:30:19
【问题描述】:

我使用了 traitsui 文档中的第一个示例代码:

from traits.api import HasTraits, Str, Int
import traitsui

class SimpleEmployee(HasTraits):
    first_name = Str
    last_name = Str
    department = Str

    employee_number = Str
    salary = Int

sam = SimpleEmployee()
sam.configure_traits(filename='/Volumes/FAT/Python/Tests/test.dat')

唯一的变化是 configure_traits() 中的文件名规范。

1 - 当文件不存在时,不会创建新文件。有这样的行为就好了。

2 - 如何创建这个文件?使用

import pickle

pickle.dump( sam, open( '/Volumes/FAT/Python/Tests/test.dat', "wb" ) )

创建文件

ctraits.traits
__newobj__
p0
(c__main__
SimpleEmployee
p1
tp2
Rp3
(dp4
S'salary'
p5
I0
sS'__traits_version__'
p6
S'4.5.0'
p7
sS'first_name'
p8
S''
p9
sS'last_name'
p10
g9
sS'employee_number'
p11
g9
sS'department'
p12
VManagement
p13
sb.

以“管理”作为部门(当然,我在对话框中输入了这个值)。

但是又跑了

sam.configure_traits(filename='/Volumes/FAT/Python/Tests/test.dat')

更改部门字段并单击“确定”关闭对话框不会更改文件内容(正如它应该从文档中所做的那样)。

(MacOS X)

【问题讨论】:

    标签: enthought traitsui


    【解决方案1】:

    我发现出了什么问题:configure_traits() 应该在模态模式下运行:

    from traits.api import HasTraits, Str, Int
    from traitsui.api import View, OKCancelButtons
    
    class SimpleEmployee(HasTraits):
        first_name = Str
        last_name = Str
        department = Str
    
        employee_number = Str
        salary = Int
    
    sam = SimpleEmployee()
    sam.configure_traits(filename='/Volumes/FAT/Python/Tests/test.dat',kind='modal')    
    

    现在可以正常工作了。

    至于我的问题 #1,是的,如果需要,会创建一个新文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-13
      相关资源
      最近更新 更多