Tkinter中的Python StringVar()。get()返回一个空值

时间:2016-03-04 02:11:20

标签: python tkinter

StringVar.get()方法在调用函数c()时返回空值。但是,当我只调用new_db()函数时,它工作得很好。 我真的无法理解这个问题。有人可以向我解释一下吗?

#modules
import os
from Tkinter import *

chance=3
def cr():
    print data.get()

#new_db

def new_db():
    global data
    m.destroy()
    new=Tk()
    data=StringVar()


    Entry(new,font='BRITANIC 16',textvariable=data).grid(column=1,row=2)
    Button(new,text='Create New Database',command=cr).place(x=175,y=75)
    new.geometry('500x100+400+250')
    new.mainloop()

def c():
     global m
     m=Tk()
     Button(m,text='erferf',command=new_db).pack()
     m.mainloop()
c()

1 个答案:

答案 0 :(得分:1)

看看这个答案When do I need to call mainloop in a Tkinter application?。它告诉mainloop()必须只调用一次。

此外,当点击按钮执行m时,Tk对象new_db()仍应存在。

对于您尝试完成的操作,您应该只创建一次Tk(),并且只调用一次mainloop()。然后你应该放置代码来隐藏/显示相应的小部件。请查看In Tkinter is there any way to make a widget not visible? 以了解如何显示/隐藏小部件。