Tkinter grid布局:如何设置按钮跨3列占据对应行的空间
问题原因
你现在的写法有两个核心问题:
grid()的column参数仅接受单个整数,用来指定控件放置的起始列号,不支持传入多列组成的元组- 跨列占比需要通过
columnspan参数声明,而不是直接在column参数里指定所有要占的列
正确实现代码
首先修正按钮的grid配置:
# 按钮起始放在第1列,第5行,跨3列,sticky参数让按钮填充满所在单元格的全部空间 button_result = ttk.Button(container, text="Result") button_result.grid(column=1, row=5, columnspan=3, sticky="nsew")
如果需要窗口拉伸时,按钮也能同步填充3列的全部宽度,需要给container容器的对应3列配置权重:
# 给container的第1、2、3列设置相同的拉伸权重,权重值相同的列会按比例分配拉伸空间 container.grid_columnconfigure(1, weight=1) container.grid_columnconfigure(2, weight=1) container.grid_columnconfigure(3, weight=1)
补充说明
- 列号、行号默认从0开始计数,如果你之前的布局列是从0开始算的,记得把起始
column参数的值调整为0,columnspan保持3即可 sticky参数接受n/s/e/w四个方向的组合,nsew代表上下左右都贴齐单元格边界,实现填满效果
内容的提问来源于stack exchange,提问作者izzypt
相关产品推荐
相关产品推荐

