首页 > 解决方案 > AttributeError:“NoneType”对象没有属性“插入”

问题描述

我不明白为什么这行不通。我正在尝试将文本放入文本框中,但它没有插入。

编码:

from tkinter import *

root = Tk()
root.title("Simple Calculator")

c = Entry(root, width=25, borderwidth=5, font=('Helvetica 18 bold'), bg="#E8E8E8").grid(row=0, column=0, columnspan=8, padx=10, pady=10)

def button_click(num):
    c.insert(end, (num))

button_7 = Button(root, text=7, padx=40, pady=20, bg="#C7C7C7", font=('Helvetica 18 bold'), command=lambda: button_click(num=7)).grid(column=1, row=1)
button_8 = Button(root, text=8, padx=40, pady=20, bg="#C7C7C7", font=('Helvetica 18 bold'), command=lambda: button_click(num=8)).grid(column=2, row=1)
button_9 = Button(root, text=9, padx=40, pady=20, bg="#C7C7C7", font=('Helvetica 18 bold'), command=lambda: button_click(num=9)).grid(column=3, row=1)

button_4 = Button(root, text=4, padx=40, pady=20, bg="#C7C7C7", font=('Helvetica 18 bold'), command=lambda: button_click(num=4)).grid(column=1, row=2)
button_5 = Button(root, text=5, padx=40, pady=20, bg="#C7C7C7", font=('Helvetica 18 bold'), command=lambda: button_click(num=5)).grid(column=2, row=2)
button_6 = Button(root, text=6, padx=40, pady=20, bg="#C7C7C7", font=('Helvetica 18 bold'), command=lambda: button_click(num=6)).grid(column=3, row=2)

button_1 = Button(root, text=1, padx=40, pady=20, bg="#C7C7C7", font=('Helvetica 18 bold'), command=lambda: button_click(num=1)).grid(column=1, row=3)
button_2 = Button(root, text=2, padx=40, pady=20, bg="#C7C7C7", font=('Helvetica 18 bold'), command=lambda: button_click(num=2)).grid(column=2, row=3)
button_3 = Button(root, text=3, padx=40, pady=20, bg="#C7C7C7", font=('Helvetica 18 bold'), command=lambda: button_click(num=3)).grid(column=3, row=3)

button_0 = Button(root, text=0, padx=40, pady=20, bg="#C7C7C7", font=('Helvetica 18 bold'), command=lambda: button_click(num=0)).grid(column=1, row=4)

button_add = Button(root, text='+', padx=40, pady=20, bg="#C7C7C7", font=('Helvetica 18 bold'), command=lambda: button_click()).grid(column=1, row=5)
button_clear = Button(root, text='clear', padx=78, pady=20, bg="#C7C7C7", font=('Helvetica 18 bold'), command=lambda: button_click()).grid(column=2, row=4, columnspan=3)
button_equals = Button(root, text='=', padx=98, pady=20, bg="#C7C7C7", font=('Helvetica 18 bold'), command=lambda: button_click()).grid(column=2, row=5, columnspan=4)

这是错误消息:

File "C:\Users\Work\Desktop\Projects\Tkinker test V 0.1.py", line 10, in button_click
    c.insert(end, (num))
AttributeError: 'NoneType' object has no attribute 'insert'

当我按下按钮在文本框上输入数字时出现消息

标签: python

解决方案


c等于的返回值grid()不是 的返回值Entry()。因此,您从未保存对输入框本身的引用。

您应该像这样拆分创建和布局的调用:

c = Entry(root, width=25, borderwidth=5, font=('Helvetica 18 bold'), bg="#E8E8E8")
c.grid(row=0, column=0, columnspan=8, padx=10, pady=10)


推荐阅读