i am getting an AttributeError: 'NoneType' object has no attribute 'get' for my simple GUI program in python

i am getting an AttributeError: 'NoneType' object has no attribute 'get' for my simple GUI program in python

我收到 ButtonClick 方法内任何函数的属性错误。请帮助纠正这个问题。

import tkinter as tk
from tkinter import *

root = tk.Tk()

enter = tk.Entry(root, width = 35, borderwidth = 5).grid(row = 0, column = 0, columnspan = 3, padx =10 , pady = 10)

def ButtonClick(number):

    print(number)
    current = enter.get()
    print(current)
    # enter.delete(0,END)
    # enter.insert(0, current + number)


button1 = tk.Button(root, text="1", bg="yellow",padx = 40, pady= 20, command=lambda: ButtonClick(1)).grid(row = 1, column = 0)
root.mainloop()

python shell 使实验变得容易。假设错误是 enter 我只是将您的代码的第一部分粘贴到 shell.

>>> import tkinter as tk
>>> from tkinter import *
>>> 
>>> root = tk.Tk()
>>> 
>>> enter = tk.Entry(root, width = 35, borderwidth = 5).grid(row = 0, column = 0, columnspan = 3, padx =10 , pady = 10)
>>> repr(enter)
'None'

是的,它 None。这很典型。对象方法通常不 return 它们自己的对象。它对方法链接很方便,但大多数对象并不是为此而设计的。只做示例和教程显示的内容并将其放在单独的行中。

import tkinter as tk
from tkinter import *

root = tk.Tk()

enter = tk.Entry(root, width = 35, borderwidth = 5)
enter.grid(row = 0, column = 0, columnspan = 3, padx =10 , pady = 10)

def ButtonClick(number):

    print(number)
    current = enter.get()
    print(current)
    # enter.delete(0,END)
    # enter.insert(0, current + number)


button1 = tk.Button(root, text="1", bg="yellow",padx = 40, pady= 20, command=lambda: ButtonClick(1)).grid(row = 1, column = 0)
root.mainloop()