No se puede usar el paquete de administrador de geometría dentro

Así que estoy haciendo un lector rss usando la biblioteca tkinter, y en uno de mis métodos creo un widget de texto. Se muestra bien hasta que bash agregarle barras de desplazamiento.

Aquí está mi código antes de las barras de desplazamiento:

def create_text(self, root): self.textbox = Text(root, height = 10, width = 79, wrap = 'word') self.textbox.grid(column = 0, row = 0) 

Aquí está mi código después de:

 def create_text(self, root): self.textbox = Text(root, height = 10, width = 79, wrap = 'word') vertscroll = ttk.Scrollbar(root) vertscroll.config(command=self.textbox.yview) vertscroll.pack(side="right", fill="y", expand=False) self.textbox.config(yscrllcommand=vertscroll.set) self.textbox.pack(side="left", fill="both", expand=True) self.textbox.grid(column = 0, row = 0) 

Esto me da el error.

_tkinter.TclError: no se puede usar el paquete de administrador de geometría dentro de .56155888 que ya tiene esclavos administrados por cuadrícula en la línea vertscroll.pack (side = “right”, fill = “y”, expand = False)

Alguna idea de cómo solucionar este problema?

Según los documentos , no mezcle el pack y la grid en la misma ventana maestra:

Advertencia: Nunca mezcle la rejilla y el paquete en la misma ventana maestra. Tkinter pasará felizmente el rest de su vida tratando de negociar una solución con la que ambos gerentes estén contentos. En lugar de esperar, elimine la aplicación y eche otro vistazo a su código. Un error común es usar el padre incorrecto para algunos de los widgets.

Por lo tanto, si llama a la grid en el cuadro de texto, no llame al pack en la barra de desplazamiento.


 import Tkinter as tk import ttk class App(object): def __init__(self, master, **kwargs): self.master = master self.create_text() def create_text(self): self.textbox = tk.Text(self.master, height = 10, width = 79, wrap = 'word') vertscroll = ttk.Scrollbar(self.master) vertscroll.config(command=self.textbox.yview) self.textbox.config(yscrollcommand=vertscroll.set) self.textbox.grid(column=0, row=0) vertscroll.grid(column=1, row=0, sticky='NS') root = tk.Tk() app = App(root) root.mainloop() 

La razón del código es simple, NO SE PUEDE usar paquete y cuadrícula dentro de la misma clase o para el mismo marco. Por lo tanto, utilice sólo uno.