Python 从其他函数获取按钮单击时的tkinter条目值

Python 从其他函数获取按钮单击时的tkinter条目值,python,tkinter,tkinter-entry,Python,Tkinter,Tkinter Entry,我试图从一个输入框中获取一个值,这是我的输入,我希望在按下按钮时可以对其中写入的内容进行处理。以下是我的代码: from tkinter import * import tkinter as tk class GUI(Tk): def __init__(self): super(GUI, self).__init__() tk.Label(self, text="Input").grid(row=0) self.input = tk.

我试图从一个输入框中获取一个值,这是我的输入,我希望在按下按钮时可以对其中写入的内容进行处理。以下是我的代码:

from tkinter import *
import tkinter as tk

class GUI(Tk):

    def __init__(self):
        super(GUI, self).__init__()

        tk.Label(self, text="Input").grid(row=0)
        self.input = tk.Entry(self).grid(row=0, column=1)

        tk.Button(self, text="Start", command=self.start_button).grid(row=5, column=1)

    def start_button(self):
        print(self.input.get())

gui = GUI()
gui.mainloop()
每当我尝试按下按钮时,它都会显示None类型没有属性“get”。以下是回溯:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Program Files (x86)\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)
  File "D:/Projects/excel_reader/test.py", line 15, in start_button
    print(self.input.get())
AttributeError: 'NoneType' object has no attribute 'get'

我曾尝试删除TK作为GUI类的子类,删除super()调用,并尝试全局声明所有变量,但也没有成功。我对Python GUI非常陌生。

问题在于我为它定义网格的方式。我不知道为什么,但现在可以通过更改这个->
input=tk.Entry(root.grid)(行=0,列=1)

为此:

global input
input = tk.Entry(self)
input.grid(row=0, column=1)
原因是
grid()
方法不返回任何内容,因此其返回值实际上是
None
。这是初学者常见的错误。