1
輸入數據到Entry小部件嗨,我試圖創建一個簡單的觸摸屏界面,允許用戶輸入4位代碼到條目小部件,然後將其保存到字符串。我不確定如何做到以下幾點: 當按鈕被按下輸入該值裝入輸入構件 這裏是我的代碼,到目前爲止,但我得到以下錯誤:從按鈕
AttributeError: 'NoneType' object has no attribute 'insert'
def lockscreen():
locks = Toplevel(width=500,height=500)
locks.title('Lock Screen')
L1 = Label(locks,text="Enter 4 Digit Lock Code").grid(row=1,column=1,columnspan=3)
e1=Entry(locks, bd=5).grid(row=2,column=1,columnspan=3)
Button(locks, width=3, height=3, text='1', command =lambda:screen_text("1")).grid(row=3,column=1)
Button(locks, width=3, height=3, text='2').grid(row=3,column=2)
Button(locks, width=3, height=3, text='3').grid(row=3,column=3)
Button(locks, width=3, height=3, text='4').grid(row=4,column=1)
Button(locks, width=3, height=3, text='5').grid(row=4,column=2)
Button(locks, width=3, height=3, text='6').grid(row=4,column=3)
Button(locks, width=3, height=3, text='7').grid(row=5,column=1)
Button(locks, width=3, height=3, text='8').grid(row=5,column=2)
Button(locks, width=3, height=3, text='9').grid(row=5,column=3)
Button(locks, width=3, height=3, text='Close').grid(row=6,column=1)
Button(locks, width=3, height=3, text='0').grid(row=6,column=2)
Button(locks, width=3, height=3, text='Enter').grid(row=6,column=3)
def screen_text(text):
e1.insert(0,text)
return
master.mainloop()
多數民衆贊成解決這個問題,現在我有以下錯誤。 NameError:全局名稱'e1'未定義 是因爲我已經用lockscreen()定義它,現在我正試圖從另一個def中調用它? – user2996828
是的,但由於你的縮進方式在你的例子中,我沒有注意到。嘗試在創建按鈕之前將'screen_text'函數定義移動到* lockscreen函數內*。或完全擺脫screen_text()函數,如我最近的編輯所示。 – mshildt
按鈕調用函數而不是在lambda中嵌入語句會更好。這樣,如果gui更改爲使用其他類型的小部件,則只需更改該功能而不是每個按鈕。 –