我有两个小部件(一个在另一个上方)在两个方向上跨越整个窗口。我希望底部的控件具有特定的高度,尤其是要包含一行文本而没有任何不必要的填充,而顶部的小部件应跨越窗口的其余高度。
我尝试摆弄fill
的填充和选项,但无济于事。我该如何堆叠我的小部件以迫使其底部的高度?
from tkinter import *
root = Tk()
root.geometry('800x500')
f1 = Frame(root, bg='yellow')
f1.pack(fill='both', expand=True)
prompt = Label(root, text='text here', background='red')
prompt.config(height=1, width=1)
prompt.pack(fill='both', expand=True, pady=0, ipady=0) # fill=X leaves gray padding above and below the label
root.mainloop()
答案 0 :(得分:3)
expand选项告诉管理者为小部件框分配额外的空间。如果将父窗口小部件的尺寸设置得大于容纳所有打包窗口部件的必要尺寸,则将在所有将expand选项设置为非零值的窗口小部件之间分配超出的空间。
尝试一下:
from tkinter import *
root = Tk()
root.geometry('800x500')
f1 = Frame(root, bg='yellow')
f1.pack(fill='both', expand=True)
prompt = Label(root, text='text here', bg='red')
prompt.pack(fill='x') # No expand!
root.mainloop()
看看Thinking in Tkinter,我发现它对学习pack()
非常有用。