Tkinter中columnspan异常:密码生成器输入框布局对齐求助
解决Tkinter密码生成器的布局对齐问题
问题出在输入框列布局的权重设置上:website_entry和email_entry通过columnspan=2占据了列1和列2的总宽度,但password_entry所在的列1默认没有自动扩展的权重,导致它的宽度和上方输入框无法对齐。
修改步骤:
- 设置列的扩展权重
在窗口配置后添加一行代码,让列1自动填充可用空间:
window.grid_columnconfigure(1, weight=1)
这会让列1根据窗口大小自动扩展,列2则保持按钮所需的最小宽度。
- 保持控件的sticky属性
你的password_entry和genrate_password按钮已经设置了sticky="ew",这会让它们填满所在列的宽度,配合上面的列权重设置,就能让两者的总宽度和上方的输入框对齐。
修改后的完整代码:
from tkinter import * window = Tk() window.title("Password Generator...") window.config(padx=50, pady=50) # 添加列权重设置,让列1自动扩展 window.grid_columnconfigure(1, weight=1) logo_path = "logo.png" image_holder = Canvas(width=200, height=200) logo_image = PhotoImage(file=logo_path) image_holder.create_image(100, 100, image=logo_image) image_holder.grid(column=1, row=0) # labels website = Label(text="Website :") website.grid(row=1, column=0) email = Label(text="Email/username :") email.grid(row=2, column=0) password = Label(text="Password :") password.grid(row=3, column=0) # entry website_entry = Entry(width=45) website_entry.grid(row=1, column=1, columnspan=2) email_entry = Entry(width=45) email_entry.grid(row=2, column=1, columnspan=2) password_entry = Entry(width=21) password_entry.grid(row=3, column=1, sticky="ew") # buttons(修正拼写错误:genrate → generate) generate_password = Button(text="Generate Password") generate_password.grid(row=3, column=2, sticky="ew") add_button = Button(text="Add", width=40) add_button.grid(row=4, column=1, columnspan=2) window.mainloop()
内容的提问来源于stack exchange,提问作者Deepak
相关产品推荐
相关产品推荐

