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 に答える