Python初学者求助:如何在Tkinter中设置Entry密码框属性
解决Tkinter Entry组件的密码显示问题
嘿,作为同样折腾过Tkinter的开发者,我太懂你这种卡壳的感觉了!其实实现密码隐藏效果超简单,Tkinter的Entry组件本身就自带了这个功能,只是你没用到那个关键参数而已。
核心方法:使用show参数
Entry组件有个show参数,只要把它设置成你想用来替代密码的字符(比如最常用的*),输入的内容就会自动隐藏,只显示你设置的字符。举个简单例子:
password_entry = Entry(root, show="*")
修改你的现有代码
我帮你把代码调整了一下,不仅解决了密码显示的问题,还修复了几个容易踩的小坑(比如Entry没绑定父组件、默认文本设置错误、组件没布局导致看不到的问题):
from tkinter import * from PIL import Image, ImageTk import glob, os root = Tk() root.title("用户名/密码界面") # 给窗口加个清晰的标题 # 标签组件,绑定到root窗口 w1 = Label(root, text="用户名") w2 = Label(root, text="密码") w3 = Label(root, text="确认密码") # 用户名输入框,绑定到root窗口,设置默认文本 e1 = Entry(root) e1.insert(0, "five") # Entry没有text参数,用insert设置默认值才生效 # 密码输入框,通过show="*"实现隐藏效果 e2 = Entry(root, show="*") e2.insert(0, "six") # 确认密码输入框,同样用show参数隐藏内容 e3 = Entry(root, show="*") e3.insert(0, "seven") def show_entry_fields(): # 正确获取输入框内容的方式 username = e1.get() password = e2.get() confirm_pwd = e3.get() print(f"用户名:{username}\n密码:{password}\n确认密码:{confirm_pwd}") # 添加提交按钮触发内容打印 submit_btn = Button(root, text="提交", command=show_entry_fields) # 用grid布局让组件排列更整齐 w1.grid(row=0, column=0, padx=5, pady=5) e1.grid(row=0, column=1, padx=5, pady=5) w2.grid(row=1, column=0, padx=5, pady=5) e2.grid(row=1, column=1, padx=5, pady=5) w3.grid(row=2, column=0, padx=5, pady=5) e3.grid(row=2, column=1, padx=5, pady=5) submit_btn.grid(row=3, column=0, columnspan=2, pady=10) root.mainloop()
额外小技巧
- 你可以自定义隐藏字符,比如用
show="●"来显示实心圆点,视觉上更美观; - 如果需要做“显示密码”的功能,可以加个复选框,勾选时把
show设为空字符串"",取消勾选时再设回"*"; - 要是需要更复杂的输入验证(比如密码长度限制),可以给Entry绑定
validate和validatecommand参数。
内容的提问来源于stack exchange,提问作者Hauk




