五筆打字通主頁
新手常常出現遇到的一個錯誤,就是運行后,要改變某個組件的屬性,用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()
運行圖如下:
點擊“改變”按鈕,就可以成功改標簽的文本為“文本被改變”。
如果你把改標簽的創建和布局定位這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