【问题标题】:Getting rid of extra space with tkinter使用 tkinter 摆脱多余的空间
【发布时间】:2019-07-09 05:55:47
【问题描述】:

我正在使用 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)

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

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

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

【问题讨论】:

  • 你想要发生什么?你想让右边的窗户扩大以填满空间吗?或者,您是否希望它们向上移动以使所有空间都位于底部?还有什么?
  • 顶部的黑色(ish)矩形区域应该是某种图形,还是您要删除的图形?
  • @BryanOakley,我用白色标记圈出了我要缩小的区域。我基本上想删除该区域的空白空间。

标签: python tkinter margin


【解决方案1】:

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

【讨论】:

  • 感谢您的提示和示例!非常感激。我应该认为它在不同的机器上看起来会有所不同,因为 Google Docs 和 Microsoft Word 在处理大小方面存在类似的问题。
【解决方案2】:

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

解决此问题的最简单方法是降低根高度或增加任一框架或框架的高度以留下更小的间隙 - 计算它以便它们正确相加。

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

【讨论】:

  • 感谢您的成功。我不得不使用 root.geometry 数字。
【解决方案3】:

您需要将根几何体更改为 850

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 2011-08-21
    • 2012-10-24
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多