访问诸如Directory之类的特征的值

时间:2013-11-09 02:24:56

标签: python traits enthought traitsui

我正在做简单的文件I / O.我有一个目录特征SaveDir和一个文件特征SaveFile。如何访问GUI中输入的目录路径,或默认?例如,我想打印出来,如下例所示。

我是否使用get_value,例如SaveDir.get_value?我无法弄明白......

一旦我可以访问该值,我想创建一个路径字符串,我可以打开文件进行写入,例如self.writefile = open(path,'w')

谢谢, 科斯莫

class ControlPanel(HasTraits): 
    SaveFile = Str("MyDAta")
    SaveDir = Directory("C:/My Documents/Data")

    view = View(Item('SaveFile',label='Save Filename',style='simple'),Item('SaveDir',label='Data Directory', style='simple'))

    print SaveDir  

2 个答案:

答案 0 :(得分:0)

您需要创建该类的实例,然后在其上调用configure_traits。然后你可以检查它的SaveDir特性。通常,您会创建更改通知方法和/或按钮。

请参阅此处引用的材料: https://support.enthought.com/entries/22878645-Introductory-materials-for-Traits-and-Traits-UI

然后,我建议你从一个只有字符串和整数的类开始,并学习如何使用它们。如果您愿意,您将能够将其扩展到目录(尽管对于真实世界的程序,目录特征相当不灵活,而其他方式通常更可取。)

更新:您可以在Canopy User Python directoryExamples/traitsui-4.2.0子目录中找到许多有用的示例。

更新2:有关更有用的文件选择对话框,请参阅pyface包,特别是: https://github.com/enthought/pyface/blob/master/pyface/i_file_dialog.py

答案 1 :(得分:0)

关注@Jon(我认为这就是他的意思),可以在类中的方法内作为字符串访问目录。特别是,按钮的方法内部工作。

我不清楚这一点,但调用该方法的接缝也会创建类self的实例ControlPanel。这是对的吗?

class ControlPanel(HasTraits): 
    SaveFile = Str("MyDAta")
    SaveDir = Directory("C:/My Documents/Data")
    start = Button("Start Measurements")


    view = View(Item('SaveFile',label='Save Filename',style='simple'),
                Item('SaveDir',label='Data Directory', style='simple'), 
                UItem('start',style='custom'))

    def _start_fired(self):
        print self.SaveDir

打印:

C:/我的文件/数据