我已经定义了一个从用户输入中获取值的函数。这是一条路径(基于appJar的.directoryBox)。我已经将目录框的代码放在函数内部弹出,以便在按下按钮时显示。但是,我似乎无法使用函数之外的值。
代码的重要部分如下所示:
def dirfunction(button):
dirr = app.directoryBox('box')
app.setEntry('Directory', dirr)
app.showButton('Search')
return dirr
def searchfunction(button):
if button == 'Search':
findBigfile.findBigFiles(dirr, mbSize)
mbSize = app.addLabelEntry('Size in MB')
app.addLabelEntry('Directory')
app.setLabelWidth('Size in MB', '10')
app.setLabelWidth('Directory', '10')
app.addButton('Choose Directory', dirfunction)
app.addButton('Search', searchfunction)
app.hideButton('Search')
app.go()
我尝试在dirfunction之外使用'dirr'变量,但我无法使其工作。它只适用于。
编辑:我也无法在该函数之外创建app.directoryBox,因为这会导致在打开应用程序时直接发生弹出窗口。
答案 0 :(得分:3)
dirr是一个局部变量,它只能在定义的上下文中看到(在你的情况下,在函数dirfunction里面,它不存在于它之外)。
为了能够看到外面你必须在外面宣布它。
dirr = None
之后,从函数内部访问它,在python 2中通过使用global来完成:
def method():
global dirr # you have to declare that you'll use global variable 'dirr'
dirr = "whatever"
现在:
print `dirr`
将打印:
whatever