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

jam*_*evy 2 python sqlite tkinter

我不明白为什么按下“保存”按钮,放入“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, ]))
Run Code Online (Sandbox Code Playgroud)

我几个小时以来一直在试图解决这个问题。提前致谢。

Nov*_*vel 6

这是一个弹出窗口,不是吗?你在某处打开了另一个 tk 窗口,对吧?如果是这样,快速解决方法是为 StringVar 提供正确的 master:

AddClassMemberWindow = Tk()

ChildNameEntryVariable = StringVar(AddClassMemberWindow)
Run Code Online (Sandbox Code Playgroud)

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