繁体   English   中英

Tkinter框架不填充剩余空间

[英]Tkinter Frame Doesn't Fill Remaining Space

这是我与Tkinter的第一次相遇,而我的头正撞在墙上的墙上。

最终,我想要一个布局,该布局沿其左侧边缘使用一个框架,该框架包含一堆按钮(导航)。 这应该硬连线到100像素宽,并占用所有垂直空间。 窗口的其余部分应填充一个内容框架,我将动态更改其内容。

所以,应该很简单。 这是我所拥有的简化版本(以彩色编码作为参考):

from Tkinter import *

root = Tk()
root.geometry("300x200")

navbar = Frame(root, bg="green", width=100)
navbar.pack(anchor=W, fill=Y, expand=True, side=LEFT)

content_frame = Frame(root, bg="orange")
content_frame.pack(anchor=N, fill=BOTH, expand=True, side=LEFT )

root.mainloop()

我希望看到的是窗口左侧(全高)的绿色条(宽100像素),其余部分为橙色。 但是,我得到的是爱尔兰国旗(绿色,白色,橙色)。

不管我做什么,橙色的content_frame都拒绝水平填充。 看起来Tk似乎将窗口精确地分成了一半,将绿色导航栏放在了左侧(如预期的那样),但是给橙色content_frame仅剩下了一半的空间。

我可以通过编码来强制橙色填充空间,在这种情况下为width = 200,但是当窗口调整大小时,它不会弯曲。 另外,如果我不添加绿色导航栏,则橙色content_frame会愉快地填充整个窗口。

此示例代码显示了锚定为N的content_frame,但在哪里锚定都没有关系。 我side = LEFT还是side = RIGHT也都没关系。

我还发现,无论我如何调整绿色导航栏的宽度,Tk总是将剩余的水平空间一分为二,并将橙色的content_frame放在右半部分。

这必须很简单。 有任何想法吗?

为左框架指定expand=False

from Tkinter import *

root = Tk()
root.geometry("300x200")

navbar = Frame(root, bg="green", width=100)
navbar.pack(anchor=W, fill=Y, expand=False, side=LEFT)  # <----

content_frame = Frame(root, bg="orange")
content_frame.pack(anchor=N, fill=BOTH, expand=True, side=LEFT )

root.mainloop()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM