You need to enable JavaScript to run this app. Tkinter使用grid()布局时控件未按预期对齐问题求助
优惠活动
大模型
产品
解决方案
定价
更多

Tkinter使用grid()布局时控件未按预期对齐问题求助

问题核心原因

你布局错位的问题来自grid布局的两个常见使用错误:

  • 没有给控件设置sticky对齐属性,控件默认在所属单元格居中,不同单元格宽度不一致时就会出现错位
  • 未统一列宽约束,不同行跨列的控件字符宽度计算不匹配,Entry和Button的字符宽度基准本身也存在差异

修正方案

你只需要调整grid相关的配置即可:

  1. 给第二列(索引1)设置全局列权重,保证拉伸时宽度适配
  2. 所有输入框、按钮设置sticky="ew",让控件自动撑满所属单元格的宽度
  3. 去掉冗余的width参数,靠布局约束自动对齐,不需要手动计算字符宽度

修正后的完整代码

from tkinter import *
# ---------------------------- PASSWORD GENERATOR ------------------------------- #

# ---------------------------- SAVE PASSWORD ------------------------------- #

# ---------------------------- UI SETUP ------------------------------- #
window = Tk()
window.title("Password Manager")
window.config(padx=40, pady=40)
# 给第二列设置权重,保证横向拉伸时优先填充这一列
window.grid_columnconfigure(1, weight=1)

##### Creating logo image
canvas=Canvas(width=200, height=200)
logo_image = PhotoImage(file='logo.png')
canvas.create_image(100, 100, image=logo_image)
canvas.grid(row=0, column=1)

##### Creating labels
website_label = Label(text="Website:")
website_label.grid(row=1, column=0)

username_label = Label(text="Email/Username:")
username_label.grid(row=2, column=0)

password_label = Label(text="Password:")
password_label.grid(row=3, column=0)

##### Creating buttons
add_button = Button(text='Add')
add_button.grid(row=4, column=1, columnspan=2, sticky="ew") # 撑满两列宽度

generate_button = Button(text='Generate Password')
generate_button.grid(row=3, column=2, padx=(5,0)) # 加小边距和输入框隔开

##### Creating entries
website_entry = Entry()
website_entry.grid(row=1, column=1, columnspan=2, sticky="ew", pady=2)
website_entry.focus()

username_entry = Entry()
username_entry.grid(row=2, column=1, columnspan=2, sticky="ew", pady=2)
username_entry.insert(0, "dummy_email@hotmail.com")

password_entry = Entry()
password_entry.grid(row=3, column=1, sticky="ew", pady=2)

window.mainloop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 00:27:02