Tkinter:AttributeError:NoneType對象沒有屬性get我創(chuàng)建了這個簡單的GUI:from tkinter import *root = Tk()def grabText(event): print(entryBox.get()) entryBox = Entry(root, width=60).grid(row=2, column=1, sticky=W)grabBtn = Button(root, text="Grab")grabBtn.grid(row=8, column=1)grabBtn.bind('<Button-1>', grabText)root.mainloop()我啟動并運行UI。當我單擊Grab按鈕時,我在控制臺上收到以下錯誤:C:\Python> python.exe myFiles\testBed.pyException in Tkinter callbackTraceback (most recent call last): File "C:\Python\lib\lib-tk\Tkinter.py", line 1403, in __call__ return self.func(*args) File "myFiles\testBed.py", line 10, in grabText if entryBox.get().strip()=="":AttributeError: 'NoneType' object has no attribute 'get'我究竟做錯了什么?
2 回答

三國紛爭
TA貢獻1804條經(jīng)驗 獲得超7個贊
改變這一行:
entryBox=Entry(root,width=60).grid(row=2, column=1,sticky=W)
分為以下兩行:
entryBox=Entry(root,width=60) entryBox.grid(row=2, column=1,sticky=W)
正如你已經(jīng)正確做的那樣grabBtn
!

蝴蝶不菲
TA貢獻1810條經(jīng)驗 獲得超4個贊
的grid
,pack
并且place
在功能Entry
對象和所有其他部件的回報None
。在python a().b()
中,表達式的結果是任何b()
返回,因此Entry(...).grid(...)
將返回None
。
你應該把它分成兩行,如下所示:
entryBox = Entry(root, width=60) entryBox.grid(row=2, column=1, sticky=W)
通過這種方式,您可以將您的Entry
參考文件存儲起來entryBox
并按照您的預期進行布局。如果您收集塊中的所有grid
和/或pack
語句,這會產(chǎn)生額外的副作用,使您的布局更容易理解和維護。
添加回答
舉報
0/150
提交
取消