簡體   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