使用在函数外部函数中定义的变量



这里有这个函数

def choose_file():
file = askopenfile(mode ='r', filetypes =[('xodr Files', '*.xodr')])
if file:
res = "selected:", file
else:
res = "file not selected"
return(res)

我有这个按钮来打开对话框并选择一个文件

e3=Button (scalF, text='Wählen Sie ein Dokument',font=('Bahnschrift SemiLight',12),command=choose_file, bg='blue')
e3.pack(side='top')

后选择文件并关闭对话框我想显示变量的值定义的reschoose_file()在下面的标签

chosenFile = Label(scalF,text="I want to write here",font=('Bahnschrift SemiLight', 10))
chosenFile.pack(side='top')

你能解释一下如何从全局作用域读取变量res吗?

您可以使用tk.StringVar来保存字符串变量。

file_result = tk.StringVar()def choose_file():file = askopenfile(mode ='r', filetypes =[('xodr Files', '*.xodr')])如果文件:Res = "selected: {0}".format(file.name)其他:Res = "文件未选定">file_result.set(res)

然后这个变量(file_result)可以传递给Labeltextvariable参数(其值将用于代替文本)。

chosenFile = Label(scalF, font=('Bahnschrift SemiLight', 10),textvariable=file_result)

我可以推荐的方法之一是:将global res添加到函数的第一行

您可以通过使用global关键字声明该变量,从而在全局作用域中使用该变量。

def choose_file():
global res
file = askopenfile(mode ='r', filetypes =[('xodr Files', '*.xodr')])
if file:
res = "selected:", file
else:
res = "file not selected"
return(res)

如果你想了解更多,你可以学习python中的名称空间

你可以使用一个类:

class File():
def __init__(self):
self.res = None
e3=Button (scalF, text='Wählen Sie ein Dokument', font=('Bahnschrift SemiLight',12), command=self.choose_file, bg='blue')
e3.pack(side='top')
def choose_file(self):
# Your implementation but updating self.res, without return
def get_res(self):
return self.res

相关内容

  • 没有找到相关文章

最新更新