Fos*_*ick 2 python tk-toolkit tkinter
这是我与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()
Run Code Online (Sandbox Code Playgroud)
我期望看到的是窗口左侧的绿色条(100 px宽)(全高),窗口的其余部分为橙色.然而,我得到的是爱尔兰国旗(绿色,白色,橙色).
无论我做什么,橙色content_frame只是拒绝水平填充.似乎Tk将窗口分成两半,将绿色导航栏放在左侧(如预期的那样),但是给予橙色content_frame只留下剩余空间的一半.
我可以强制橙色通过编码填充空间,在这种情况下宽度= 200,但是当窗口调整大小时这不会弯曲.此外,如果我不添加绿色导航栏,橙色content_frame会愉快地填充整个窗口.
此示例代码显示了具有anchor = N的content_frame,但是我锚定它的位置并不重要.无论我是左边还是边=右边都没关系.
我还发现,无论我如何调整绿色导航栏的宽度,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()
Run Code Online (Sandbox Code Playgroud)