我是Tkinter的绝对初学者,我需要帮助: 我想用一个按钮打开一个文件。我到处都找到了这个非常简单的例子:
from Tkinter import *
from tkFileDialog import askopenfilename
def callback():
name= askopenfilename()
print name
errmsg = 'Error!'
Button(text='File Open', command=callback).pack(fill=X)
mainloop()
但是如何从函数回调中调用变量“name”?我在这个函数之外需要这个变量!当然,我也可以在回调函数中打开文件,但我需要打开的文件将内容保存在数组中并使用数组...
答案 0 :(得分:5)
最好的方法是在类中使callback
成为方法:
class Asker(object):
def __init__(self):
self.name = None
def callback(self):
self.name = askopenfilename()
print self.name
ask = Asker()
Button(text='File Open', command=ask.callback).pack(fill=X)
现在,对象ask
仍然存在,如果ask.name
尚未执行,则None
为callback
,之后askopenfilename
的结果为global
您可以使用class
,但这样做确实没有优势,所以我建议您使用这种基于{{1}}的方法。
答案 1 :(得分:0)
如果你需要一个函数外的变量,你需要一个全局变量
name="" # if you don't call the function it'll remain empty!
def callback():
global name
name= askopenfilename()
print name