使用Tkinter摆脱多余的空间

时间:2019-07-01 05:29:47

标签: python tkinter margin

我正在用tkinter做餐厅菜单,以便在夏季练习。餐馆名称下面是许多眨眼空间,为了使我的程序看起来不那么分散,我想摆脱它们。这是我目前的代码。

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)

我认为也许在lblTitle.grid中添加(sticky =“ NSEW”)可以解决此问题,因为我在此处发现了类似的问题,但得到的结果相同。白色标记是我指的区域。全屏区域相同,并且最小化。

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

Showing the area I wanna cut down

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

3 个答案:

答案 0 :(得分:0)

您的根的高度为1050,顶部框架的高度为100,底部的高度为650。这留有300的高度作为空白空间(由于边界的缘故,可能会少一些)。

解决此问题的最简单方法是减小根部高度或增加其中一个或两个框架的高度,以留出较小的间隙-计算该间隙,以使它们正确累加。

另一种选择是添加一个间隔框架,使其具有与您要差距不同的高度,然后将其打包到底部,然后再打包ButtomFrame,以这种方式将BottomFrame向上推。

答案 1 :(得分:0)

要删除TopsBottomMainFrame之间的空白,您需要使用BottomMainFrame并填充所有其他空间。您可以使用fill(坚持分配的空间的所有边缘)和expand(消耗未分配的任何额外空间)来做到这一点。

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

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

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会调整大小以适合。当您尝试计算每个区域的大小时,由于字体大小,像素密度等原因,您的程序在不同的计算机上可能看起来不一样。

答案 2 :(得分:-1)

您需要将根几何更改为850

或将所有底框的高度设置为950