#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’