Как очистить записи в tkinter после нажатия кнопки отправки?

#python #tkinter

#питон #ткинтеръ

Вопрос:

Я использую Tkinter для создания пользовательской формы ввода и получения значений от пользователей и сохранения значений в базе данных при нажатии на кнопку отправки. Я хочу очистить все поля из виджетов ввода после нажатия кнопки отправки, чтобы значения сохранялись в базе данных, а виджеты ввода очищались, чтобы пользователь мог снова заполнить данные. Я попробовал команду delete(0;’end’), но это не сработало. Ниже приведен мой код:

 def database():
    customer_name = name.get()
    mobile_no = num.get()
    email_id = mail_id.get()
    address = addr.get()

    result = {
            "Customer Name":customer_name,
            "Mobile":mobile_no,
            "Email ID":email_id,
            "Address":address
    }

    print(result)
    db.Customer_Info.insert_one(result)
    print('Value Inserted')
    client.close()


##Creating tkinter window
def main_page():
    
    global window
    window = Tk()
    window.title('Products')
    window.geometry('400x500')

    global name,uname,mob,num,mail_id,addr
    name = StringVar()
    num = IntVar()
    num.set('')
    mail_id = StringVar()
    addr = StringVar()

    Label(window,text = 'HN Organics',background = 'green',
        foreground = 'white',font = ('Arial',20)).grid(column = 0,
        row = 0, padx = 120, pady =25)

    Label(window ,text = "Name").grid()
    uname = Entry(window,textvariable = name).grid()

    Label(window ,text = "Mobile No.").grid()
    mob = Entry(window,textvariable = num).grid()

    Label(window ,text = "Email ID").grid()
    mail = Entry(window,textvariable = mail_id).grid()

    Label(window ,text = "Address").grid()
    addr1 = Entry(window,textvariable = addr).grid()

    Button(window,text = 'Submit',command = database).grid()

    window.mainloop()
main_page()
  

При нажатии кнопки отправки значения сохраняются в базе данных, но я хочу, чтобы записи также очищались после сохранения в базе данных. Как мне это сделать??
Я пробовал использовать name.delete(0.’end’) / name.delete(0.’END’) и даже name.delete(0.’Tkinter.END’), но это показывает, что нет атрибута delete.

Комментарии:

1. Ошибка, которую вы получили, может быть вызвана тем, что вы использовали Entry(...).grid(...) . Поместите оба этих параметра в две разные строки, и тогда ошибка может исчезнуть 😉

2. Я все еще получаю ту же ошибку

3. Проверьте мой ответ

4. и, пожалуйста, укажите полную ошибку в Q

Ответ №1:

Вы можете добавить set('') команду в функцию базы данных после сохранения значений, и она очистит записи, чтобы пользователь мог снова заполнить данные. Просто добавьте:

 name.set('')
num.set('')
mail_id.set('')
addr.set('')
  

после client.close()

Ответ №2:

Не ставьте кавычки в конце. попробуйте name.delete (0, КОНЕЦ). Удаление является частью обычной библиотеки tkinter, поэтому должно сработать.

Комментарии:

1. Он показывает следующую ошибку: AttributeError: объект ‘StringVar’ не имеет атрибута ‘delete’