You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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绑定validatevalidatecommand参数。

内容的提问来源于stack exchange,提问作者Hauk

火山引擎 最新活动