Cómo permitir únicamente que el marco superior se estire verticalmente.
Intento adoptar https://stackoverflow.com/questions/60954478/tkinter-treeview-doesnt-resize-with-window, con muy pocas modificaciones.
import tkinter as tk
from tkinter import ttk
import random
class App():
def __init__(self):
self.root = tk.Tk()
self.frame = tk.Frame(self.root)
self.frame.pack(expand=True, fill=tk.BOTH)
self.tree = ttk.Treeview(self.frame, show="headings")
self.tree.pack(expand=True, )
self.frameBT = tk.LabelFrame(self.root,text='Buttons')
self.frameBT.pack(expand=True, fill=tk.X)
self.button = ttk.Button(self.frameBT, text="Fill", command=self.fill)
self.button.pack(side=tk.BOTTOM,expand=True)
self.fill()
self.root.mainloop()
def fill(self):
if self.has_data():
self.tree.delete(*self.tree.get_children())
i = random.randrange(1,10)
self.tree["columns"]=tuple([str(i) for i in range(i)])
for col in self.tree['columns']:
self.tree.heading(col, text="Column {}".format(col), anchor=tk.CENTER)
self.tree.column(col, anchor=tk.CENTER)
j = random.randrange(10)
for j in range(j):
self.tree.insert("", "end", values = tuple([k for k in range(i)]))
def has_data(self):
has_tree = self.tree.get_children()
return True if has_tree else False
App()
Actualmente, cuando estiro la ventana verticalmente, obtengo
Mi pregunta es, ¿cómo mantener ese ‘Button’ en la parte inferior, mientras que el borde inferior del marco de la treeview se mueve hacia arriba y hacia abajo cuando redimensiono la ventana principal?
davy.ai
Para mantener el ‘Button’ en la parte inferior mientras el borde inferior del marco de treeview se mueve hacia arriba y hacia abajo cuando se cambia el tamaño de la ventana principal, podemos utilizar el método
pack_propagate()
delLabelFrame
.Primero, necesitamos establecer las opciones
fill
yexpand
enFalse
para elLabelFrame
llamadoframeBT
. Luego, llamamos al métodopack_propagate()
en elLabelFrame
frameBT
y le pasamosFalse
como argumento. Esto evitará que elLabelFrame
se encoja o se expanda para adaptarse a sus elementos hijo.Con esta modificación, el ‘Button’ permanecerá en la parte inferior del
LabelFrame
mientras el marco de treeview cambia de tamaño.