使用网格布局实现tkinter中的垂直线

6
我正在尝试使用tkinter网格创建两列之间的垂直线。我一直在寻找方法来实现它,但是所有的方法都涉及到了我不需要的坐标等内容。
from tkinter import *   
master = Tk()
player1 = "A"
player2 = "B"
from tkinter import *
Label(master, text="NAME", font=30).grid(row=0)
Label(master, text=player1, font=30).grid(row=1)
Label(master, text=player2, font=30).grid(row=2)
Label(master, text="SCORE", font=30).grid(column=2, row=0)

我想在第一列添加一条垂直线,有方法可以做到吗?

1个回答

15
你可以使用 ttk.Separator 小部件。
将以下内容添加到你的代码中:
import tkinter.ttk

tkinter.ttk.Separator(master, orient=VERTICAL).grid(column=1, row=0, rowspan=3, sticky='ns')

在这里rowspan=3是必要的,以使分隔符跨越所有3行(标题、玩家1和玩家2)。sticky='ns'用于将分隔符从窗口顶部伸展到底部。默认情况下,分隔符每个像素只有1个像素长,因此如果没有sticky,它几乎不可见。

结果预览:

预览


当我将它复制并粘贴到我的项目中时,出现了一个错误,错误信息显示为:"NameError: name 'tkinter' is not defined"。 - toto1105
@toto1105 你有包含 import tkinter.ttk 吗? - Aran-Fey
不,我刚刚改了它。现在它显示'tkapp'对象没有'ttk'属性。 - toto1105
1
"改了一些东西,请告诉我们你改了什么,这样其他人也可以受益。" - Mikla
2
Python 3.6,Ubuntu 18.4:我必须使用sticky ='nse'。如果未给出e(ast),则分隔线通过列的中间运行。 - testalucida
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接