我创建了一个获取文件目录路径的函数,如下所示:
def discoverLocation(self):
self.txtBox.insert(1.0, askdirectory())
if(self.txtBox.get(1.0) != 0):
global path
path = self.txtBox.get(1.0,END)
print "path is " + path
此函数的输出按预期工作,即输出“path is'文件目录'”
然而,当我从这个函数外部使用这个'path'变量时,变量似乎发生了变化。
这是代码:
def __init__(self, parent):
path = StringVar()
print path
dirs = os.listdir(path)
for file in dirs:
totalFiles += 1
此处路径的值与之前的路径不同,它显示的名称为“PY_VAR0”。
我想使用def_init_(self,parent)方法中discoverLocation(self)方法给出的相同值。
答案 0 :(得分:2)
您似乎错过了类的基本点:它们将信息存储在其实例属性中。您不想创建全局变量,您想要创建实例属性。您可以通过self
引用它。
所以,在__init__
:
def __init__(self, parent):
self.path = StringVar()
您现在可以在self.path
中引用discoverLocation
。
答案 1 :(得分:1)
你需要做两件事:
从discoverLocation
返回路径的值,而不是尝试将其设为全局路径,例如:
class MyClass(object):
def discoverLocation(self):
self.txtBox.insert(1.0, askdirectory())
if(self.txtBox.get(1.0) != 0):
path = self.txtBox.get(1.0,END)
print "path is " + path
return path
return None
在主函数中使用该路径,例如:
def __init__(self, parent):
path = self.discoverLocation()
print path
dirs = os.listdir(path)
for file in dirs:
totalFiles += 1
如果找不到路径,您还需要决定该怎么办 - 例如如果discoverLocation()
返回None