You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tkinter密码管理器输入框与按钮对齐问题求助

解决Tkinter密码管理器布局对齐问题

以下是调整后的代码,能实现你要的对齐效果:

window = Tk()
window.title("Password Manager")
window.config(padx=50, pady=50)

# 配置列权重,让列1自动填充空间,列2保持按钮宽度
window.columnconfigure(1, weight=1)
window.columnconfigure(2, weight=0)

canvas = Canvas(width=200, height=200)
my_pass_img = PhotoImage(file="logo.png")
canvas.create_image(100, 100, image=my_pass_img)
canvas.grid(column=1, row=0)

web_label = Label(text="Website:", fg="black")
web_label.grid(row=1, column=0, sticky="e", padx=(0, 10))

user_label = Label(text="Email/Username:", fg="black")
user_label.grid(row=2, column=0, sticky="e", padx=(0, 10))

pass_label = Label(text="Password:", fg="black")
pass_label.grid(row=3, column=0, sticky="e", padx=(0, 10))

web_entry = Entry()
web_entry.grid(row=1, column=1, columnspan=2, sticky="ew", padx=(0, 5))
web_entry.focus()

user_entry = Entry()
user_entry.grid(row=2, column=1, columnspan=2, sticky="ew", padx=(0, 5))
user_entry.insert(0, "-@gmail.com")

pass_entry = Entry(width=20)
pass_entry.grid(row=3, column=1, sticky="w", padx=(0, 5))

generate_button = Button(text="Generate Password", fg="black", command=generate_password, padx=5)
generate_button.grid(row=3, column=2, sticky="e")

add_button = Button(text="Add", fg="black", command=save)
add_button.grid(row=4, column=1, columnspan=2, sticky="ew", pady=(10, 0))

window.mainloop()

关键修改说明:

  • 列权重配置:通过columnconfigure设置列1权重为1,让它自动扩展填充可用空间,列2权重为0保持按钮宽度,从根本上解决输入框和按钮的对齐基础。
  • 标签与输入框对齐:给所有标签添加sticky="e"让标签右对齐,配合padx调整间距,确保标签和输入框边缘对齐。
  • 输入框宽度控制:网站、用户名输入框去掉硬设的width,改用sticky="ew"让它们填满列1+列2的空间;密码输入框设固定width=20并sticky="w"左对齐,保证宽度更小且和上方输入框左边缘对齐。
  • 按钮溢出与对齐:给Generate按钮加padx=5避免文字溢出,sticky="e"让它右对齐;Add按钮去掉硬设width,用sticky="ew"让它填满列1+列2的空间,自动实现均匀对齐,同时加pady调整和上方控件的间距。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 09:10:55