0

我正在做简单的文件 I/O。我有一个 Directory traitSaveDir和一个 File trait 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  
4

2 回答 2

0

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

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

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

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

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

于 2013-11-09T04:56:20.860 回答
0

在@Jon 之后(我认为这就是他的意思),可以将目录作为类中方法内的字符串访问。尤其是按钮的方法里面的工作原理。

我不清楚这一点,但调用该方法也会创建selfclass的实例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:/我的文件/数据

于 2013-11-11T22:34:58.250 回答