按钮不更新 tkinter 中的变量
Button not updating variable in tkinter
一直在开发个人应用程序,我的 TopLevel windows 之一无法正常工作。我需要变量 idd 是用户在 Entry 小部件中输入的任何内容,但出了点问题,我已经尝试了我所知道的 tkinter 的所有内容,但没有结果。
我生成的小部件如下:
def win_erase_id(parent):
idd=-1
wind=Toplevel(parent)
wind.title("Enter id")
lbl=Label(win,text="Enter player ID you want to erase:")
svar=StringVar()
ent=Entry(win,textvariable=svar)
fr=Frame(win)
def butA_m():
idd=int(svar.get())
wind.destroy()
def butC_m():
idd=-1
wind.destroy()
butA=Button(fr,text="Accept",command=butA_m,relief=RAISED)
butC=Button(fr,text="Cancel",command=butC_m,relief=RAISED)
lbl.grid(row=0,sticky="nswe")
ent.grid(row=1,sticky="nswe")
fr.grid(row=2,sticky="nswe")
butA.pack(side=LEFT,fill=BOTH)
butC.pack(side=RIGHT,fill=BOTH)
wind.wait_window()
return idd
我认为通过设置一个文本变量,然后在方法 butA_m 中询问该变量的值,最终变量将是我需要的整数,但我得到的值始终是 -1。尝试在 Entry 小部件上使用 .delete() 和 .insert() 但也不起作用。
编辑: 我不小心从 wind
实例中删除了一些“d”,但已经更正了它。
您的顶级 window 前两行称为 wind
,但之后您引用了未绑定的 window win
。尝试更改此启动,看看您是否仍然遇到同样的问题
nonlocal,正如我前面的人所说,实际上解决了它,我只是不明白如何使用它,但是在检查 this site 之后我最终纠正了我的代码并且有效。
def butA_m():
nonlocal idd
idd=int(svar.get())
wind.destroy()
def butC_m():
nonlocal idd
idd=-1
wind.destroy()
一直在开发个人应用程序,我的 TopLevel windows 之一无法正常工作。我需要变量 idd 是用户在 Entry 小部件中输入的任何内容,但出了点问题,我已经尝试了我所知道的 tkinter 的所有内容,但没有结果。
我生成的小部件如下:
def win_erase_id(parent):
idd=-1
wind=Toplevel(parent)
wind.title("Enter id")
lbl=Label(win,text="Enter player ID you want to erase:")
svar=StringVar()
ent=Entry(win,textvariable=svar)
fr=Frame(win)
def butA_m():
idd=int(svar.get())
wind.destroy()
def butC_m():
idd=-1
wind.destroy()
butA=Button(fr,text="Accept",command=butA_m,relief=RAISED)
butC=Button(fr,text="Cancel",command=butC_m,relief=RAISED)
lbl.grid(row=0,sticky="nswe")
ent.grid(row=1,sticky="nswe")
fr.grid(row=2,sticky="nswe")
butA.pack(side=LEFT,fill=BOTH)
butC.pack(side=RIGHT,fill=BOTH)
wind.wait_window()
return idd
我认为通过设置一个文本变量,然后在方法 butA_m 中询问该变量的值,最终变量将是我需要的整数,但我得到的值始终是 -1。尝试在 Entry 小部件上使用 .delete() 和 .insert() 但也不起作用。
编辑: 我不小心从 wind
实例中删除了一些“d”,但已经更正了它。
您的顶级 window 前两行称为 wind
,但之后您引用了未绑定的 window win
。尝试更改此启动,看看您是否仍然遇到同样的问题
nonlocal,正如我前面的人所说,实际上解决了它,我只是不明白如何使用它,但是在检查 this site 之后我最终纠正了我的代码并且有效。
def butA_m(): nonlocal idd idd=int(svar.get()) wind.destroy() def butC_m(): nonlocal idd idd=-1 wind.destroy()