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

如何在Tkinter Grid布局的两列之间添加竖线?

解决Tkinter Grid布局两列间添加竖线的问题

嘿,我懂你想要的效果——在Grid布局的两列之间加一条竖线,而且不想用那些基于绝对坐标的笨方法,毕竟Grid就是要靠行列来灵活布局的对吧?给你两个完全适配Grid布局的可行方案,都不用手动算坐标:

方案1:使用ttk.Separator(推荐)

ttk模块里的Separator是专门用来做分隔线的原生组件,风格会和你的系统UI保持一致,而且能完美适配Grid布局的行列规则。

修改后的完整代码:

from tkinter import *
from tkinter import ttk  # 别忘了导入ttk模块

master = Tk()
player1 = "A"
player2 = "B"

# 左侧NAME区域标签
Label(master, text="NAME", font=30).grid(row=0, column=0)
Label(master, text=player1, font=30).grid(row=1, column=0)
Label(master, text=player2, font=30).grid(row=2, column=0)

# 添加垂直分隔线
separator = ttk.Separator(master, orient='vertical')
# rowspan=3让分隔线覆盖3行,sticky='ns'让它上下拉伸填满高度,padx给点间距更美观
separator.grid(row=0, column=1, rowspan=3, sticky='ns', padx=5)

# 右侧SCORE标签
Label(master, text="SCORE", font=30).grid(column=2, row=0)

master.mainloop()

这个方案的好处是:系统原生风格、自动适配行高,完全基于Grid的行列逻辑,不需要任何坐标计算。

方案2:用Frame自定义竖线

如果不需要系统原生风格,想自己控制线条的颜色和宽度,可以用一个窄的Frame来实现,同样适配Grid布局:

完整代码:

from tkinter import *

master = Tk()
player1 = "A"
player2 = "B"

# 左侧NAME区域标签
Label(master, text="NAME", font=30).grid(row=0, column=0)
Label(master, text=player1, font=30).grid(row=1, column=0)
Label(master, text=player2, font=30).grid(row=2, column=0)

# 自定义垂直竖线Frame
vertical_line = Frame(master, width=2, bg='black')  # width是线条宽度,bg是颜色
# 同样用rowspan和sticky让它填满3行的高度
vertical_line.grid(row=0, column=1, rowspan=3, sticky='ns', padx=5)

# 右侧SCORE标签
Label(master, text="SCORE", font=30).grid(column=2, row=0)

master.mainloop()

你可以根据需求调整width和bg参数,做出不同样式的竖线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:00:21