Вопрос

Привет, я пытаюсь создать простой интерфейс сенсорного экрана, который позволит пользователям вводить 4-значный код в виджет ввода, а затем сохранять его в строке.Я не уверен, как сделать следующее:Когда кнопка нажала ввод, это значение в виджет входа здесь является моим кодом, но я получаю следующую ошибку:

Ошибка атрибута:Объект «NoneType» не имеет атрибута «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()
Это было полезно?

Решение

Проблема в этой строке:

e1=Entry(locks, bd=5).grid(row=2,column=1,columnspan=3)

Объединив вместе конструктор Entry() и вызов Grid(), вы фактически сохраняете результат grid() вызывать e1, а не поле ввода.Исправить:

e1=Entry(locks, bd=5)
e1.grid(row=2,column=1,columnspan=3)

Примечания:

  • У вас та же проблема с переменной L1.
  • Вы также можете добавить команды к другим кнопкам.

После решения новой проблемы из комментариев ваш код становится примерно таким:

def lockscreen():
    locks = Toplevel(width=500,height=500)
    locks.title('Lock Screen')
    L1 = Label(locks,text="Enter 4 Digit Lock Code")
    L1.grid(row=1,column=1,columnspan=3)
    e1=Entry(locks, bd=5)
    e1.grid(row=2,column=1,columnspan=3)

    def screen_text(text):
        e1.insert(0,text)

    Button(locks, width=3, height=3, text='1', 
           command=lambda:screen_text("1")).grid(row=3,column=1)          
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top