【问题标题】:Tkinter - Hide HintTkinter - 隐藏提示
【发布时间】:2025-12-27 15:55:06
【问题描述】:

当我选择用户名和密码部分时,如何自动删除此提示? (点击后不显示)

from tkinter import *
root =Tk()
def save_fonc():
    kul=entry1.get()
    pas=entry2.get()
    print("Username:",kul,"Password:",pas)

#------------------
entry1=Entry(root)
entry1.insert(0,"Username")
entry1.pack()
#------------------
entry2=Entry(root)
entry2.insert(0,"Password")
#entry2.config(show="*")#and also I don't want to show password section.
entry2.pack()
#------------------
buton_kaydet=Button(root,text="Enter",command=save_fonc)
buton_kaydet.pack()

root.geometry("300x200")
root.mainloop()

【问题讨论】:

  • 您的代码中没有任何提示。
  • @Matiiss 他的意思是“用户名”在点击后仍然停留在输入框中。
  • @IsmailHafeez 这绝对不是他想要的,因为它无论如何都会在给定的代码中留在那里,哦,我明白了
  • @Matiiss 完全正确。他想删除它。
  • 是的,如果可能的话,我想删除它。

标签: python tkinter passwords hide hint


【解决方案1】:

您可以在单击标签时删除文本。

例子:

from tkinter import *
root = Tk()

def clear_text(event):
    event.widget.delete(0, "end")

entry1=Entry(root)
entry1.insert(0,"Username")
entry1.pack()
entry1.bind("<FocusIn>", clear_text)

它的作用是将它绑定到函数clear_textclear_text 清除标签中的文本。

完整代码:

from tkinter import *
root =Tk()
def save_fonc():
    kul=entry1.get()
    pas=entry2.get()
    print("Username:",kul,"Password:",pas)

def clear_text(event):
    event.widget.delete(0, "end")

#------------------
entry1=Entry(root)
entry1.insert(0,"Username")
entry1.pack()
entry1.bind("<FocusIn>", clear_text)
#------------------
entry2=Entry(root)
entry2.insert(0,"Password")
entry2.config(show="*")#and also I don't want to show password section.
entry2.pack()
entry2.bind("<FocusIn>", clear_text)
#------------------
buton_kaydet=Button(root,text="Enter",command=save_fonc)
buton_kaydet.pack()

root.geometry("300x200")
root.mainloop()

【讨论】:

  • 一开始密码将显示为* 您必须在事件触发后配置它,以便在小部件为空并且开始输入不是从一开始的内容时激活
  • 没问题@Birkan
  • def clear_text(event): event.widget.delete(0, "end") entry2.config(show="*") 是的,马蒂斯现在更好
【解决方案2】:

制作一个函数,清除输入框中的文字,然后在函数中绑定。

def removeValue(event):
    event.widget.delete(0, 'end')
    

【讨论】:

  • 我在@Ismail 发布后写了这个答案
【解决方案3】:

所以你来改进你的代码:

from tkinter import *
root = Tk()


def save_fonc():
    kul = entry1.get()
    pas = entry2.get()
    print("Username:", kul, "Password:", pas)


def pass_func(event):
    entry2.delete(0, 'end')
    entry2.config(show='*')

# ------------------
entry1 = Entry(root)
entry1.insert(0, "Username")
entry1.pack()
entry1.bind('<FocusIn>', lambda e: entry1.delete(0, 'end'))
# ------------------
entry2 = Entry(root)
entry2.insert(0, "Password")
entry2.pack()
entry2.bind('<FocusIn>', pass_func)
# ------------------
buton_kaydet = Button(root, text="Enter", command=save_fonc)
buton_kaydet.pack()

root.geometry("300x200")
root.mainloop()

所以基本上.bind 在这种情况下将每个条目绑定到一个事件:'&lt;FocusIn&gt;' 当焦点切换到该小部件时触发。同样在第二种情况下,仅在事件触发后才配置条目,以便“密码”正常可见

【讨论】: