无法从tkinter中的变量获取值

时间:2014-09-10 09:12:16

标签: python-2.7 tkinter

app=Tk()
age=IntVar()
name=StringVar()
id=IntVar()
def add_user():
    app1=Tk()
    L1 = Message(app1,text="Name")
    L1.pack( side = LEFT)
    E1 = Entry(app1,textvariable=name)
    E1.pack()
    L2 = Message(app1,text="\nAge")
    L2.pack( side = LEFT)
    E2 = Spinbox(app1,from_=1,to_=100,textvariable=age)
    E2.pack()
    l3=Message(app1,text="\nId")
    l3.pack()
    e3=Spinbox(app1,from_=1,to_=100,textvariable=id)
    e3.pack()
    b5=Button(app1,text="submit",command=app1.destroy)
    b5.pack()
    app1.mainloop()
    print age.get(),name.get(),id.get()
    return

b1=Button(app,command=add_user,relief=RIDGE,text="add patient details")
b1.pack(side=BOTTOM)
app.mainloop()

print语句不打印正确的值,它总是打印默认值。我不明白我在哪里犯了错误

1 个答案:

答案 0 :(得分:0)

您无法获取值的原因是,mainloop退出后,小部件已被销毁。

您的代码中的更大问题是您正在创建两个Tk实例。 Tkinter的设计并非如此。一个正确的Tkinter程序只创建一个Tk实例,并在该实例被销毁时退出。如果要创建多个窗口,则第二个和后续窗口必须是Toplevel的实例。

您可能会发现此问题的答案很有用:Correct way to implement a custom popup tkinter dialog box