0

我通过 wx.DirDialog 框中的 GetPath 创建了一个变量(snowDIR),我想在函数之外使用 snowDIR。我的代码有一个示例:

for file in os.listdir(snowDIR):
            if fnmatch.fnmatch(file, '*.hdf'): 
                if file[9:16] == a: 
                    inputhdf =  (snowDIR + '\\' + file) 
                    print 'input hdf is: ', inputhdf
                    tmod = 1

def OnDownload(self, e):
    modisPathFile = 'MODIS_data_directory_path.txt'
    dlg = wx.DirDialog(self, "Choose a directory:",
                       style=wx.DD_DEFAULT_STYLE
                       #| wx.DD_DIR_MUST_EXIST
                       #| wx.DD_CHANGE_DIR
                       )

    if dlg.ShowModal() == wx.ID_OK:
        print "You chose %s" % dlg.GetPath()
        snowDIR = dlg.GetPath()
        print 'snowDIR : ', snowDIR
        dlg.Destroy()

more code ....

return snowDIR

任何帮助将不胜感激,因为我已经在没有锁定的情况下搜索网络并且我已经没有时间了。

4

1 回答 1

1

只需将其分配给self.snowDir,您就可以从您的对象以及任何有权访问它的对象访问它!例如:

def OnDownload(self, e):
    modisPathFile = 'MODIS_data_directory_path.txt'
    dlg = wx.DirDialog(self, "Choose a directory:",
                       style=wx.DD_DEFAULT_STYLE
                       #| wx.DD_DIR_MUST_EXIST
                       #| wx.DD_CHANGE_DIR
                       )

    if dlg.ShowModal() == wx.ID_OK:
        print "You chose %s" % dlg.GetPath()
        self.snowDIR = dlg.GetPath()
        print 'snowDIR : ', self.snowDIR
        dlg.Destroy()

在同一范围内-即作为同一对象的一部分:

def OnDoitClick(self, event):
    """ Do the action that uses snowDir """
    self.MOD01_dir = os.path.join(self.snowDIR,'MOD01')
    ....

范围之外: *假设上面的代码是 * 的类定义的一部分,MyFrameClass 并且您的应用程序使用 TheFrame = MyFrameClass(...) 与上面相同的级别,您可以使用

if hasattr(TheFrame, snowDIR):
   print 'snowDIR', TheFrame.snowDIR
else:
   print 'User did not set snowDIR'
于 2013-08-09T21:10:19.173 回答