Python: Comenzando con tk, ¿el widget no cambia de tamaño en la cuadrícula?

Acabo de comenzar con Tkinter / ttk Python y tengo problemas para cambiar el tamaño de mis widgets cuando uso un diseño de cuadrícula. Aquí hay un subconjunto de mi código que muestra el mismo problema que el código completo (me doy cuenta de que este subconjunto es tan simple que probablemente sería mejor usar el pack lugar de la grid , pero creo que esto ayudará a solucionar el problema principal y una vez que lo entiendo, puedo solucionarlo en cualquier parte del progtwig completo:

 import Tkinter as tk import ttk class App(tk.Frame): def __init__(self, master): tk.Frame.__init__(self, master) # Create my widgets self.tree = ttk.Treeview(self) ysb = ttk.Scrollbar(self, orient='vertical', command=self.tree.yview) xsb = ttk.Scrollbar(self, orient='horizontal', command=self.tree.xview) self.tree.configure(yscroll=ysb.set, xscroll=xsb.set) self.tree.heading('#0', text='Path', anchor='w') # Populate the treeview (just a single root node for this simple example) root_node = self.tree.insert('', 'end', text='Test', open=True) # Lay it out on a grid so that it'll fill the width of the containing window. self.tree.grid(row=0, column=0, sticky='nsew') self.tree.columnconfigure(0, weight=1) ysb.grid(row=0, column=1, sticky='nse') xsb.grid(row=1, column=0, sticky='sew') self.grid() master.columnconfigure(0, weight=1) self.columnconfigure(0, weight=1) app = App(tk.Tk()) app.mainloop() 

Quiero hacerlo para que mi vista de árbol llene todo el ancho de la ventana en la que está, pero en lugar de eso, la vista de árbol solo se centra en el centro de la ventana.

Intente especificar el argumento self.grid cuando realice self.grid . Sin él, el Marco no cambiará de tamaño cuando la ventana lo haga. También deberá rowconfigure master y self, tal como lo ha columnconfigure con columnconfigure d ellos.

  #rest of code goes here... xsb.grid(row=1, column=0, sticky='sew') self.grid(sticky="nesw") master.columnconfigure(0, weight=1) master.rowconfigure(0,weight=1) self.columnconfigure(0, weight=1) self.rowconfigure(0, weight=1) 

Alternativamente, en lugar de cuadrar el Marco, pack y especifique que llena el espacio que ocupa. Dado que el Marco es el único widget en el Tk, en realidad no importa si pack o grid .

  #rest of code goes here... xsb.grid(row=1, column=0, sticky='sew') self.pack(fill=tk.BOTH, expand=1) self.columnconfigure(0, weight=1) self.rowconfigure(0, weight=1)