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()
答案 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? 以了解如何显示/隐藏小部件。