【问题标题】:Why does StringVar().get() return a blank value in python?为什么 StringVar().get() 在 python 中返回一个空值?
【发布时间】:2017-08-26 03:04:33
【问题描述】:

我不知道为什么按下了“保存”按钮,放入“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, ]))

我已经尝试了好几个小时来解决这个问题。提前致谢。

【问题讨论】:

  • 是的,抱歉,忘记添加了。与数据库无关,因为当我尝试打印变量时,它只是作为空白值返回
  • ChildNameEntryVariable 声明为全局不会更改数据库中的结果,而且我在任何地方都没有except::/

标签: python tkinter sqlite


【解决方案1】:

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

AddClassMemberWindow = Tk()

ChildNameEntryVariable = StringVar(AddClassMemberWindow)

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

【讨论】:

  • 经过数小时试图找出为什么总是空白的原因,这终于解决了!我打开了另一个 tkWindow,需要先销毁它才能工作!
猜你喜欢
  • 1970-01-01
  • 2022-12-03
  • 2019-02-09
  • 1970-01-01
  • 2018-09-02
  • 2019-11-25
  • 2018-08-29
  • 2015-09-21
  • 2020-07-31
相关资源
最近更新 更多