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

Tkinter中columnspan异常:密码生成器输入框布局对齐求助

解决Tkinter密码生成器的布局对齐问题

问题出在输入框列布局的权重设置上:website_entry和email_entry通过columnspan=2占据了列1和列2的总宽度,但password_entry所在的列1默认没有自动扩展的权重,导致它的宽度和上方输入框无法对齐。

修改步骤:

  1. 设置列的扩展权重
    在窗口配置后添加一行代码,让列1自动填充可用空间:
window.grid_columnconfigure(1, weight=1)

这会让列1根据窗口大小自动扩展,列2则保持按钮所需的最小宽度。

  1. 保持控件的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:45:29