【问题标题】:How to clear entries in tkinter after clicking submit button?单击提交按钮后如何清除 tkinter 中的条目?
【发布时间】:2020-08-23 10:06:31
【问题描述】:

我正在使用 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') 但它表明没有属性删除。

【问题讨论】:

  • 您收到的错误可能是因为您使用了Entry(...).grid(...)。将这两个放在两个不同的行中,然后错误可能会消失;)
  • 我仍然遇到同样的错误
  • 检查我的答案
  • 请在 Q 中包含完整的错误

标签: python tkinter


【解决方案1】:

您可以在存储值后在数据库函数中添加set('') 命令,它将清除条目,以便用户再次填写详细信息。 只需添加:

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

client.close()之后

【讨论】:

    【解决方案2】:

    不要在 END 周围加上引号。 尝试 name.delete (0, END)。 删除是普通 tkinter 库的一部分,所以应该可以工作。

    【讨论】:

    • 它显示以下错误:AttributeError: 'StringVar' object has no attribute 'delete'
    猜你喜欢
    • 2022-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 2022-10-22
    相关资源
    最近更新 更多