为什么StringVar()。get()在python中返回一个空值?

时间:2017-03-31 18:37:04

标签: python tkinter sqlite

我无法弄清楚为什么'保存'按下按钮,将值放入' 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, ]))

我一直试图弄清楚这几个小时。提前谢谢。

1 个答案:

答案 0 :(得分:2)

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

AddClassMemberWindow = Tk()

ChildNameEntryVariable = StringVar(AddClassMemberWindow)

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