2013-02-13 75 views
0

在我比赛的时候,我有一个__init__函数创建一组七个输入框,像这样:Tkinter的错误使用输入删除方法

self.string1 = StringVal() 
self.entry1 = Entry(frame, textvariable = self.string1).grid(row = 4, column = 1, sticky = W) 

这被复制六次。这工作。 在比赛结束,不过,我想删除的条目框的文本,使用此代码,我发现了几个地方在线:

self.entry1.delete(0, END) 

我也用其他的尝试,我发现:

if self.entry1.get(): 
    self.entry1.delete(0, END) 

这两个都说self.entry1是一个NoneType对象,并且没有方法.get().delete()。只是试一下,我用self.string1.get()等代替了self.entry1.get()self.entry1.delete(0,END)等。我也试过用.delete(0, END)代替.delete(0.0, END)。这些都不管用。我不明白我做错了什么。 感谢您的帮助!

+0

阅读[本答案]的第一部分(http://stackoverflow.com/a/12024089/1217270)。 – 2013-02-14 00:20:49

回答

2

当你做这样的事情:

self.foo = Button(...).grid(...) 

...那是什么都存储在self.foo是调用grid()的结果。这将始终是None。您需要将您的窗口小部件创建与loyout分开,以便保存对创建的窗口小部件的引用。

+0

谢谢你这工作。我会投票,但我没有足够的代表。这完全解决了这个问题。你能解释为什么这是吗?我不明白为什么这个工作 – erdekhayser 2013-02-14 01:23:18