當前位置:首頁 ? 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 類


此文章來自:www.chinaengraver.com  網站還有相關的tkinter教程系列課程文章,感興趣的可以前往。

來源:濟亨網

本文鏈接:http://www.chinaengraver.com/post/351.html

    << 上一篇 下一篇 >>

    湘公網安備 43011102000514號 - 湘ICP備08100508號

    2019年秋霞鲁丝片瓜皮_导航亚洲AV日韩AV永久无码_有没有哪些可以看片的免费的_国产色妞妞在线视频免费播放