为什么StringVar().get()在python中返回空值?

为什么StringVar().get()在python中返回空值?,python,tkinter,sqlite,Python,Tkinter,Sqlite,我不明白为什么按下“保存”按钮,输入“ChildName”变量的值为空 def AddClassMember(): global ChildNameEntryVariable global AddClassMemberWindow AddClassMemberWindow = Tk() ChildNameEntryVariable = StringVar() ChildNameEntry = Entry(AddClassMemberWindow, te

我不明白为什么按下“保存”按钮,输入“ChildName”变量的值为空

def AddClassMember():
    global ChildNameEntryVariable
    global AddClassMemberWindow

    AddClassMemberWindow = Tk()

    ChildNameEntryVariable = StringVar()
    ChildNameEntry = Entry(AddClassMemberWindow, textvariable = ChildNameEntryVariable)
    ChildNameEntry.grid(row=2,column=1)
    ChildNameEntrySave = Button(AddClassMemberWindow, text = "save", command = SaveChildName)
    ChildNameEntrySave.grid(row=1,column=1)

def SaveChildName():
    PupilName = ChildNameEntryVariable.get()

    with db:
        cursor.execute(''' INSERT INTO 'Pupil Information' (PupilNames) VALUES (?)''', ([PupilName, ]))

我已经想了好几个小时了。提前谢谢。

这是一个弹出窗口,不是吗?你有另一个tk窗口在某处打开,对吗?如果是这样,快速修复方法是为StringVar提供正确的主机:

AddClassMemberWindow = Tk()

ChildNameEntryVariable = StringVar(AddClassMemberWindow)

正确的解决方法是记住在一个程序中不要多次使用
Tk()
。如果您需要更多窗口,请使用
Toplevel
小部件创建它们

是的,对不起,忘了加上这个。与数据库无关,因为当我尝试打印变量时,它只是返回一个空白值,声明
childnamentryvariable
as global不会更改数据库中的结果,我没有
,除了:
anywhere:/几个小时试图找出某些内容始终为空白的原因后,终于对其进行了排序!我打开了另一个tkWindow,需要先摧毁它才能工作!