TKinter:框架和根之间失去对齐

时间:2017-12-21 19:38:47

标签: python tkinter grid alignment

我遇到了一个奇怪的问题。我有一个小网格(8行,5列)。根有几个框架。大多数运行正常。顶行的四个字段(在我的情况下为1,我不使用0)具有文本,并且必须连续具有相同的颜色。我无法在root中实现这一点,所以我用标签创建了一个框架(text ="")。除了所有文本在左侧连接而不再位于下面的网格区域之外,这给出了期望的外观。 代码实际上非常简单,但我希望无论如何都要求它,所以这里是相关的部分:

# Top frame
top_frame=LabelFrame(root, text= "", bg=top_line_color)
top_frame.grid(row =1, column=0, sticky=W+E, columnspan=5)

# Fixed labels:
Label(top_frame, text="Anten", font=fnt, bg=top_line_color).grid(row=1, 
column=0)
Label(top_frame, text="Antenna", font=fnt, bg=top_line_color).grid(row=1, 
column=1)
Label(top_frame, text="Corr.", font=fnt, width=4, 
bg=top_line_color).grid(row=1, column=3)
Label(top_frame, text="Move", font=fnt, width=4, 
bg=top_line_color).grid(row=1, sticky=W, column=4)
Label(root, text="Azimuth:", justify=RIGHT, font=fnt).grid(row=2, sticky=W)
Label(root, text="Elevation:", justify=RIGHT, font=fnt).grid(row=3, 
sticky=W) 
Label(root, text="Location:",justify=RIGHT, font=fnt).grid(row=4, sticky=W)
Label(root, text=acemedat.myloc, font=fnt).grid(row=4, column=1)
Label(root, text="Dat/Tim:", justify=RIGHT, font=fnt).grid(row=4, column=2) 
Label(root, text="Moon distance (km):", font=fnt).grid(row=5, columnspan=2, 
sticky=W)

标签后跟数据字段(也在根目录中)。他们顺从网格没有问题。 如何将框架字段与根字段对齐? 提前谢谢了, 哈克

1 个答案:

答案 0 :(得分:0)

如果您希望所有内容都在网格中排列,最简单的解决方案是将它们全部放在同一帧中。如果对固定标签使用sticky属性,则可以使用纯色,不间断的颜色。根据您的系统,您可能需要更改标签,使其为borderwidth和/或highlightthickness为零。如果您希望标签左对齐,则可以使用标签的anchor属性执行此操作。

例如:

from tkinter import *

root = Tk()

fnt = ("Helvetica", "12")
top_line_color = "bisque"

# Fixed labels:
Label(root, text="Anten", font=fnt, bg=top_line_color,
      anchor="w").grid(row=0, column=0, sticky="nsew")
Label(root, text="Antenna", font=fnt, bg=top_line_color,
      anchor="w").grid(row=0, column=1, sticky="nsew")
Label(root, text="Corr.", font=fnt, width=4, bg=top_line_color,
      anchor="w").grid(row=0, column=2, sticky="nsew")
Label(root, text="Move", font=fnt, width=4, bg=top_line_color,
      anchor="w").grid(row=0, column=3, sticky="nsew")

Label(root, text="Azimuth:", justify=RIGHT, font=fnt).grid(row=2, sticky=W)
Label(root, text="Elevation:", justify=RIGHT, font=fnt).grid(row=3,  sticky=W) 
Label(root, text="Location:",justify=RIGHT, font=fnt).grid(row=4, sticky=W)
Label(root, text="acemedat.myloc", font=fnt).grid(row=4, column=1)
Label(root, text="Dat/Tim:", justify=RIGHT, font=fnt).grid(row=4, column=2) 
Label(root, text="Moon distance (km):", font=fnt).grid(row=5, columnspan=2, sticky=W)

root.mainloop()