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

Tkinter复选框添加tk.Text后布局错位问题求助

解决Tkinter复选框布局错位问题

问题根源

  1. 文本组件(Text)的行位置设置错误,与复选框区域间隔过大,窗口拉伸时列宽分配失衡
  2. 文本组件仅设置sticky="w",未填充列宽,引发列宽异常拉伸
  3. 未配置列权重,窗口调整时无法自动适配布局

修正后的代码

import tkinter as tk

root = tk.Tk()
root.title("Cisco Device Commands")

# 复选框数据
functions = [1,2,3,4,5,6,7,8,9]

checkbox_values = [tk.BooleanVar() for _ in range(len(functions))]
for i, option in enumerate(functions):
    # 每列最多6个,列号由i//6计算,行号由i%6计算,偏移3行避免顶部拥挤
    row_count = i % 6 + 3
    col_count = i // 6

    checkbox = tk.Checkbutton(root, text=option, variable=checkbox_values[i])
    checkbox.grid(row=row_count, column=col_count, padx=10, sticky="w")

# 配置列权重,让两列自适应窗口宽度
root.grid_columnconfigure(0, weight=1)
root.grid_columnconfigure(1, weight=1)

# 文本组件放在复选框最后一行的下一行(最大行号是5+3=8,所以放在row=9)
output_window = tk.Text(root, width=60, height=20)
output_window.grid(row=9, column=0, columnspan=2, padx=10, pady=10, sticky=tk.EW)

root.mainloop()

关键修改说明

  • 修正文本组件的行位置:将row=len(functions) + 1改为row=9,对应复选框最后一行(row=8)的下一行,避免布局间隔过大
  • 设置文本组件的sticky=tk.EW:让文本框填充两列宽度,防止单列被过度拉伸
  • 添加grid_columnconfigure:给两列设置权重,确保窗口调整时两列宽度均匀分配,复选框不会错位分离

内容的提问来源于stack exchange,提问作者Oscar Salgado Ortiz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:32:58