调用在wx python中的事件函数中创建的变量

时间:2013-08-09 21:02:47

标签: python variables wxpython

我在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

任何帮助都会受到极大的赞赏,因为我在没有锁定的情况下搜索网络,而且我已经没时间了。

1 个答案:

答案 0 :(得分:1)

只需将其分配给self.snowDir,您就可以从对象和任何有权访问它的内容中访问它! e.g:

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 的类定义的一部分,并且您的应用使用了 {{1} } 与上面相同的级别你可以使用

TheFrame = MyFrameClass(...)