Я хочу, чтобы фрейм изменял свой размер по вертикали, чтобы отображались все виджеты.
В настоящее время фрейм не будет увеличиваться по мере добавления дополнительных виджетов, а виджеты, созданные ниже определенной точки, будут отображаться. не отображается.
Я знаю, что можно использовать вертикальную полосу прокрутки, но предпочитаю этого не делать. Фрейм будет содержать разное количество виджетов, но никогда не так много, чтобы его можно было прокручивать в вертикальном направлении. Поэтому я бы предпочел, чтобы он естественным образом изменял размер в этом направлении.
Вот минимальный пример кода:
Код: Выделить всё
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
outer_frm = tk.Frame(root)
outer_frm.grid(column=0, row=0)
canv = tk.Canvas(outer_frm)
canv.grid(column=0, row=0)
inner_frm = tk.Frame(canv)
inner_frm.grid(column=0, row=0)
sbar = ttk.Scrollbar(outer_frm, orient='horizontal', command=canv.xview)
canv.configure(xscrollcommand=sbar.set)
sbar.grid(column=0, row=1, sticky='EW')
inner_frm.bind(
"",
lambda e: canv.configure(
scrollregion=canv.bbox("all")
)
)
canv.create_window(
(0,0), window=inner_frm, anchor='nw'
)
for i in range(100):
for j in range(30):
tk.Label(inner_frm, text=f'-----{i}-----{j}-----').grid(column=i, row=j)
root.mainloop()
Код: Выделить всё
root.update_idletasks()
width = root.winfo_width()
required_height = inner_frm.winfo_reqheight()
root.geometry(f"{width}x{required_height}")
Как мне это сделать? сделать правильный размер кадра в вертикальном направлении?
Подробнее здесь: https://stackoverflow.com/questions/790 ... itself-pro