考虑这个简单的代码:
from Tkinter import *
import ttk
root= Tk()
ttk.Label(root, text='Heading Here').grid(row=1, column=1)
ttk.Separator(root,orient=HORIZONTAL).grid(row=2, columnspan=5)
root.mainloop()
当我运行此代码时,分隔符几乎不可见
我用红色箭头标记了它,如果你能看到它是一个小点的东西。
如何使分隔符跨越整个水平宽度,或至少可见?
答案 0 :(得分:24)
分隔符的自然宽度为1像素。你告诉它保留五列的空间,但是你没有要求分隔符实际填充这五列。要解决此问题,请提供sticky
属性,该属性表示“如果此窗口小部件的空间超出需要的空间,则使窗口小部件的边缘”粘贴到其容器的特定边“。
在这种情况下,您希望分隔符粘贴到其容器的左右边缘。粘性属性使用指南针的值作为值,因此您希望“e”表示东方,“w”表示西方:
ttk.Separator(...).grid(..., sticky="ew")
答案 1 :(得分:2)
@Bryan的sticky
解决方案很好,但它只解决部分情况,因为分隔符不会覆盖整个水平宽度(你问的)。以下是您可以应用的替代解决方案:使用.grid()
布局而不是place()
,并且可以完全控制分隔符的位置,宽度(长度)甚至高度。要将此应用于当前情况(没有任何额外功能)并覆盖整个水平宽度,只需:
替换
ttk.Separator(root,orient=HORIZONTAL).grid(row=2, columnspan=5)
与
ttk.Separator(root).place(x=0, y=26, relwidth=1)
您可以根据需要设置“y”。另请注意,不需要orient=HORIZONTAL
,因为它是默认选项。 (检查http://effbot.org/tkinterbook/place.htm以获取使用`.option()'布局的详细信息和示例。)
答案 2 :(得分:1)
您可能必须给分隔符一个ipadx
,以使其可见。在您的情况下,它是可见的,但由于宽度而看不到。试试这个:
Separator(root, orient=HORIZONTAL).grid(row=1,column=0,columnspan=4, ipadx=100)