当前位置:首页 » tkinter » 正文

tkinter新手常常遇到的 'NoneType' object has no attribute ***** ,解决办法很简单。

  新手常常出现遇到的一个错误,就是运行后,要改变某个组件的属性,用config方法来改变的话,就会提示:'NoneType' object has no attribute 'config' ,这里有一个关键词:'NoneType' 翻译成中文就是“无类型"。

  我们先来看看一个很简单的代码,就是点击一个按钮,改变标签的文本,代码如下:

from tkinter import *
def change():
    la1.config(text='文本被改变')

root=Tk()
la1=Label(root,text='我是标签1',bg='lightblue')
la1.pack()

but1=Button(root,text="改变",command=change)
but1.pack(pady=5)

root.mainloop()

 运行图如下:

未命名.GIF

点击“改变”按钮,就可以成功改标签的文本为“文本被改变”。


如果你把改标签的创建和布局定位这2句代码,合并成一句,写成一行代码,即:

la1=Label(root,text='我是标签1',bg='lightblue')
la1.pack()

改成

la1=Label(root,text='我是标签1',bg='lightblue').pack()

运行后,点击按钮,立即提示:AttributeError: 'NoneType' object has no attribute 'config'

这说明,这样创建和布局写成一行的结果是,这个标签成了没有类型的东西了,既然没有类型,当然不可以对它进行操作,当然不可以改它的文本。


所以解决这种问题,真的好简单,只要把创建和布局代码,写成2行,不要合并为一行,就不会出现这种 'NoneType' 错误。


如果你想知道的更详细,可以在这2种写法的代码基础上,在标签创建布局代码后,加一行代码:

print(type(la1))

标签创建,布局合并成一行代码,会输出 <class 'NoneType'>

而标签创建,布局代码分开写,则会输出 <class 'tkinter.Label'>

这说明,合并成一行代码的情况下,标签成了无类型的类。而分开写的情况下,标签还是 tkinter.Label 类


此文章来自:wb86.com  网站还有相关的tkinter教程系列课程文章,感兴趣的可以前往。

打赏 支付宝打赏 微信打赏

来源:济亨网

本文链接:http://www.wb86.com/post/351.html

    << 上一篇 下一篇 >>

    湘公网安备 43011102000514号 - 湘ICP备08100508号