2014-02-21 71 views
0

Pastebin - My Full CodePython 3.x Tkinter,Entry field issue?

我的程序有一个问题影响我的输入字段。

随着我的密码输入它的工作很好,输入存储到一个StringVar并可用于测试它是否已正确输入。 当用户在管理设置页面输入电子邮件地址或新密码时,它不起作用,文本变量始终为空。

如果你能提供帮助,那将是非常感谢,因为这是一个重要的资格。

问题的地方:

切换功能

#Function that changes the system email address 
def ChangeEmail(page): 

    global field_ChangeEmail 
    newEmail = field_ChangeEmail.get() 

    field_ChangeEmail.set('') 

    print(newEmail) 

    settingsDB = sqlite3.connect('Settings.db') 

    action = ("UPDATE ADMIN_SETTINGS set SYSTEM_EMAIL = '" + newEmail + "' where ID=1") 

    settingsDB.execute(action) 
    settingsDB.commit() 

    settingsDB.close() 

输入字段

global field_ChangeEmail 
    entry_ChangeEmail = tk.Entry(page, textvariable = field_ChangeEmail, justify = CENTER, fg = settings_EntryFontColour, font = settings_EntryFont) 
    widthRatio = settings_AS_Column03Width 
    heightRatio = settings_AS_RowHeight 
    relativeX = settings_AS_Column03RelX 
    relativeY = settings_AS_Row01RelY - 0.0009 
    entry_ChangeEmail.place(width=screenWidth*widthRatio, height=screenHeight*heightRatio, relx=relativeX, rely=relativeY, x=-((screenWidth*widthRatio)*0.5), y=-((screenHeight*heightRatio)*0.5)) 
+1

这是很多需要阅读的代码。你能删除所有与你的问题无关的东西吗? – Kevin

+0

我们不能期望通过全部893行代码来为您找到一个bug,尤其是当代码不会像发布一样运行时。 –

+0

我已经更新了涉及两个区域的帖子。 – RossGosling

回答

0

这没有什么错,你发布的代码是,虽然你的place使用和变量的大小是非常, 很奇怪。我强烈建议你学习包或者网格,它会让你的GUI变得更加容易,并且随着时间的推移保持它的正确性。除非其他两个都不起作用,否则绝对不能使用。

这就是说,当我运行上面的代码,并添加一点额外,使其工作,它工作正常。 ChangeEmail打印输入窗口小部件中的值,然后通过将该变量设置为空字符串来清除输入窗口小部件。我认为这就是它应该做的。

如果文本变量设置为空(None?),那么在代码的其他部分就会发生这种情况。