Tkinter复选框添加tk.Text后布局错位问题求助
解决Tkinter复选框布局错位问题
问题根源
- 文本组件(Text)的行位置设置错误,与复选框区域间隔过大,窗口拉伸时列宽分配失衡
- 文本组件仅设置
sticky="w",未填充列宽,引发列宽异常拉伸 - 未配置列权重,窗口调整时无法自动适配布局
修正后的代码
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
相关产品推荐
相关产品推荐

