使用 tkinter 去除多余的 space

Getting rid of extra space with tkinter

我正在用 tkinter 制作餐厅菜单,以便在夏季练习。餐厅名字下面有很多闪烁space,为了让我的程序看起来不那么散乱,我想去掉。这是我目前的代码。

root = Tk()
root.geometry("1450x1050+0+0")
root.title("Flamin' Damon's")
root.configure(background='#000000')

Tops = Frame (root, width = 1450, height = 100, bd = 12, relief = "raise")
Tops.pack(side=TOP)
lblTitle = Label(Tops, font=('arial', 75, 'bold'), background='#e88215', text= "\tFlamin' Damon's\t\t\t")
lblTitle.grid(row =0, column=0)
BottomMainFrame = Frame (root,background='#000000', width = 1350, height = 650, bd = 12, relief = "raise")
BottomMainFrame.pack(side=BOTTOM)

F1 = Frame (BottomMainFrame, background='#e88215', width = 450, height = 650, bd = 12, relief = "raise")
F1.pack(side=LEFT)

F2 = Frame (BottomMainFrame,  background='#e88215', width = 450, height = 650, bd = 12, relief = "raise")
F2.pack(side=LEFT)
F2Top = Frame (F2,  background='#e88215', width = 450, height = 350, bd = 4, relief = "raise")
F2Top.pack(side=TOP)
F2Bottom = Frame (F2, width = 450, height = 300, background='#e88215', bd = 4, relief = "raise")
F2Bottom.pack(side=BOTTOM)

F3 = Frame (BottomMainFrame,background='#e88215', width = 450, height = 650, bd = 12, relief = "raise")
F3.pack(side=RIGHT)

我想也许将 (sticky = "NSEW") 添加到 lblTitle.grid 会解决问题,因为我在这里发现了类似的问题,但我得到了相同的结果。白色标记是我指的区域。该区域在全屏和最小化时相同。

lblTitle.grid(row =0, column=0,sticky = "NSEW")

现在我不会尝试完全删除该区域,但可能会删除 50% 到 75%。可能是我的根和框架的尺寸吗?我也一直在和他们玩。任何帮助将不胜感激。

您的根的高度为 1050,顶部框架的高度为 100,底部框架的高度为 650。这留下了 300 的高度作为空的黑色 space(由于边框可能会少一些)。

解决这个问题的最简单方法是降低根部高度或增加其中一个或框架的高度以留下更小的间隙 - 计算它以便它们正确加起来。

另一个选择是添加一个 spacer 框架,给它一个你想要的差距的高度,然后在打包 ButtomFrame 之前将它打包到底部,这样它会推动 BottomFrame向上。

您需要将根几何形状更改为 850

或所有底部框架的高度为950

要删除 TopsBottomMainFrame 之间的空白 space,您需要 BottomMainFrame 使用并填写所有额外的 space。您可以使用 fill(坚持分配的 space 的所有边缘)和 expand(消耗任何未分配的额外 space)。

BottomMainFrame.pack(side=BOTTOM, fill="both", expand=True)

如果您希望三个垂直区域使用水平区域的 1/3 space 和所有垂直区域 space,您也可以使用相同的选项:

F1.pack(side=LEFT, fill="both", expand=True)
F2.pack(side=LEFT, fill="both", expand=True)
F3.pack(side=RIGHT, fill="both", expand=True)

您所做的工作比您需要做的多得多。通常建议不要为框架指定尺寸。相反,为功能小部件指定大小,整个 UI 将调整大小以适合。当您尝试计算每个区域的大小时,由于字体大小、像素密度等原因,您的程序在不同机器上看起来可能不一样。