单击时从 tkinter 按钮获取 return 值
Getting return value from tkinter button when clicked
我需要一个 tkinter 按钮来为变量赋值,但我不知道如何操作。我不能只将赋值放在按钮回调函数中,因为它在回调函数中是局部的,并且会丢失。如何从我的主要功能中的按钮取回值?
代码如下:
def newfile():
def create_file(entry):
file=open(entry.get(0),'w')
return file
chdir(askdirectory())
name=Tk()
name.title("Name the File?")
prompt=Label(name, text="Enter name for new file:")
prompt.grid(row=0)
e=Entry(name)
e.grid(row=1)
e.insert(0, "Untitled")
create=Button(name, text="Create")
#Code I want the button to execute: current=create_file(e), name.destroy()
create.grid(row=2, column=3)
name.mainloop()
return current
有人知道吗?
此外,我需要能够从 newfile()
的 return 中检索电流。
我要做的是创建一个 class,在这个 class 中将名称和当前定义为 class 变量(self.name 和 self.current)所以我可以毫无问题地在 class 函数中修改它们。
如果你使用nonlocal current
,你应该可以直接在create_file
函数中设置current变量,只要current已经被定义,它应该可以工作。请记住将连接到按钮 command
参数的函数调用放在 lambda 函数中,这样您就可以为它提供参数。不过,在未来,真的要按照评论,整个代码可以重新组织,使它看起来更合理...
def newfile():
current = None
def create_file(entry):
nonlocal current
current = open(entry.get(),'w')
e.master.destroy()
chdir(askdirectory())
name=Tk()
name.title("Name the File?")
prompt=Label(name, text="Enter name for new file:")
prompt.grid(row=0)
e=Entry(name)
e.grid(row=1)
e.insert(0, "Untitled")
create=Button(name, text="Create", command = lambda: create_file(e))
create.grid(row=2, column=3)
name.mainloop()
return current
我需要一个 tkinter 按钮来为变量赋值,但我不知道如何操作。我不能只将赋值放在按钮回调函数中,因为它在回调函数中是局部的,并且会丢失。如何从我的主要功能中的按钮取回值?
代码如下:
def newfile():
def create_file(entry):
file=open(entry.get(0),'w')
return file
chdir(askdirectory())
name=Tk()
name.title("Name the File?")
prompt=Label(name, text="Enter name for new file:")
prompt.grid(row=0)
e=Entry(name)
e.grid(row=1)
e.insert(0, "Untitled")
create=Button(name, text="Create")
#Code I want the button to execute: current=create_file(e), name.destroy()
create.grid(row=2, column=3)
name.mainloop()
return current
有人知道吗?
此外,我需要能够从 newfile()
的 return 中检索电流。
我要做的是创建一个 class,在这个 class 中将名称和当前定义为 class 变量(self.name 和 self.current)所以我可以毫无问题地在 class 函数中修改它们。
如果你使用nonlocal current
,你应该可以直接在create_file
函数中设置current变量,只要current已经被定义,它应该可以工作。请记住将连接到按钮 command
参数的函数调用放在 lambda 函数中,这样您就可以为它提供参数。不过,在未来,真的要按照评论,整个代码可以重新组织,使它看起来更合理...
def newfile():
current = None
def create_file(entry):
nonlocal current
current = open(entry.get(),'w')
e.master.destroy()
chdir(askdirectory())
name=Tk()
name.title("Name the File?")
prompt=Label(name, text="Enter name for new file:")
prompt.grid(row=0)
e=Entry(name)
e.grid(row=1)
e.insert(0, "Untitled")
create=Button(name, text="Create", command = lambda: create_file(e))
create.grid(row=2, column=3)
name.mainloop()
return current