python - 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'
当我按下按钮在文本框上输入数字时出现消息
解决方案
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)
推荐阅读
- c++ - 如何在 boost 和 asio 上将 ssl 添加到 http 服务器
- javascript - 如何使用 WinAppDriver 和 Node 输入文本?
- sql - Redshift SQL - 计算组内重复值的序列
- nginx - Nginx 在动态子文件夹中部署静态文件
- python-3.x - 如何在views.py中获取ForeignKey的值?
- rpc - 如何实现:主机A将数据写入其本地nvme磁盘,然后主机B通过远程访问磁盘读取值?
- reactjs - Reactjs 和 Firebase:用户和管理员的登录界面或单独的登录界面?
- java - 在一个自定义 Jackson JsonSerializer 中序列化两个字段时如何避免重复 JSON 字段?
- php - Xdebug 启动连接,然后自动关闭
- javascript - Redux Thunk 数据存储为字符串而不是对象