使用 pack() 的 Tkinter 小部件位移

Tkinter widget displacement with pack()

我想在一个框架中打包两个按钮(左和右)和一个标签(在中间)。我希望标签将框架上剩余的 space 填充到两侧,但是小部件会被这段代码垂直移位。最好的方法是什么?小部件不一定必须打包在框架上,但我希望它们水平对齐,而标签的文本大小可以更改,但按钮需要留在最左侧和最右侧的位置。 enter image description here

import tkinter as tk

root = tk.Tk()
root.geometry('600x800')
root.configure(background='#141414')

frm = tk.Frame(root)
frm.place(x=0, y=0, width=300, height=30)

btn1 = tk.Button(frm, text='button1')
lbl = tk.Label(frm, text='Lalalalalala')
btn2 = tk.Button(frm, text='button2')

btn1.pack(side='left')
lbl.pack(fill='x')
btn2.pack(side='right')


tk.mainloop()

您可以通过多种方式解决此问题。一种解决方案是将标签包装到一侧或另一侧而不是顶部。

btn1.pack(side='left')
lbl.pack(side='left', fill='x', expand=True)
btn2.pack(side='right')

另一种是先包纽扣,再包标签。对于 pack,顺序很重要。

btn1.pack(side='left')
btn2.pack(side='right')
lbl.pack(fill='x', expand=True)

有关 pack 工作原理的图解说明,请参阅 to the question