这里有这个函数
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
)可以传递给Label
的textvariable
参数(其值将用于代替文本)。
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