Я хочу упаковать две кнопки (левую и правую) и метку (посередине) в рамку. Я хочу, чтобы метка заполняла оставшееся пространство в кадре с обеих сторон, но виджеты смещаются по вертикали с этим кодом. Как лучше всего это сделать? Виджеты не обязательно должны быть упакованы в рамку, но я хочу, чтобы они были выровнены по горизонтали, в то время как размер текста метки может меняться, но кнопки должны оставаться на своих местах слева и справа. введите описание изображения здесь
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, см. этот ответ к вопросу Путаница с методом пакета Tkinter.
Огромное спасибо! Это прекрасно объясняет!