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

问题描述 投票:0回答:1

我遇到了一个奇怪的问题。我有一个小网格(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)

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

python tkinter grid alignment
1个回答
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()
© www.soinside.com 2019 - 2024. All rights reserved.