tkinter ttk分隔符不会显示

时间:2013-06-09 20:32:47

标签: tkinter ttk

考虑这个简单的代码:

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()

当我运行此代码时,分隔符几乎不可见 ttk separator not visible
我用红色箭头标记了它,如果你能看到它是一个小点的东西。

如何使分隔符跨越整个水平宽度,或至少可见?

3 个答案:

答案 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)