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
相关产品推荐
相关产品推荐

