如何正确使用entry_widget.get()函数在Tkinter中获取用户输入?

时间:2015-07-18 20:39:58

标签: python python-2.7 tkinter

我正在努力构建一个简单的小文本编辑器,但我收到的错误是我无法弄清楚的。它与我在Tkinter中使用.get()函数有关。我使用的是python2.7。有人可以帮忙吗?以下是代码:

from Tkinter import *


def open_file():
    user_file = open(user_input.get(), 'a')
    file_contents = user_file.read()
    text_box.insert(END, file_contents)
root = Tk()

user_input = Entry(root).pack(side=TOP)
text_box = Text(root).pack()
b1 = Button(root, text="open", command=open_file).pack(side=LEFT)
b2 = Button(root, text="save").pack(side=LEFT)
b3 = Button(root, text="quit", command=root.quit).pack(side=LEFT)

root.mainloop()

The error message reads:
Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1535, in __call__
    return self.func(*args)
  File "/home/brandon/TkProjects/TextEditor.py", line 7, in open_file
    user_file = open(user_input.get, 'a')
AttributeError: 'NoneType' object has no attribute 'get'

其中说我没有属性.get(),但我不明白为什么。我创建了一个名为user_input的Entry小部件。我尝试将它存储在一个变量中,但是它也没有用。请帮忙。

filename = user_input.get() 

1 个答案:

答案 0 :(得分:2)

之间存在很大差异
user_input = Entry(root).pack(side=TOP)

user_input = Entry(root)
user_input.pack(side=TOP)

由于pack函数返回None而不是self。这就是为什么你应该在两行中这样做,就像我在第二段代码中写的一样。

祝你好运。