【问题标题】:How do I properly use the entry_widget.get() function for obtaining user input in Tkinter? [duplicate]如何正确使用 entry_widget.get() 函数在 Tkinter 中获取用户输入? [复制]
【发布时间】:2015-07-18 20:39:57
【问题描述】:

我正在构建一个简单的小文本编辑器,但我收到了一个我无法弄清楚的错误。这与我在 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() 

【问题讨论】:

  • 更仔细地阅读错误。它不是说“你”没有属性.get(),而是说NoneType 没有属性。问问自己:我为什么要在 NoneType 类型的东西上调用 .get()

标签: python python-2.7 tkinter


【解决方案1】:

区别很大

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

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

因为 pack 函数返回 None 而不是 self。这就是为什么你应该像我在第二个代码块中写的那样在两行中执行此操作。

祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 2020-03-26
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    相关资源
    最近更新 更多