Tkinter — фрейм может прокручиваться по горизонтали, но не будет правильно изменять свой размер по вертикали.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Tkinter — фрейм может прокручиваться по горизонтали, но не будет правильно изменять свой размер по вертикали.

Сообщение Anonymous »

У меня есть фрейм, который можно прокручивать по горизонтали. Это работает так, как хотелось.
Я хочу, чтобы фрейм изменял свой размер по вертикали, чтобы отображались все виджеты.
В настоящее время фрейм не будет увеличиваться по мере добавления дополнительных виджетов, а виджеты, созданные ниже определенной точки, будут отображаться. не отображается.
Я знаю, что можно использовать вертикальную полосу прокрутки, но предпочитаю этого не делать. Фрейм будет содержать разное количество виджетов, но никогда не так много, чтобы его можно было прокручивать в вертикальном направлении. Поэтому я бы предпочел, чтобы он естественным образом изменял размер в этом направлении.
Вот минимальный пример кода:

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»