Estoy intentando usar la funcionalidad del módulo Tkinter (Python 2.7) para crear una GUI que tenga ocho widgets colocados en una cuadrícula de 7 filas por 5 (lo siento que no incluí una imagen; el cuadro de diálogo no me permite navegar y cargar la imagen guardada).Python - Múltiples fotogramas con Grid manager
(Widget, START_ROW, start_col, row_span, column_span):
- ("Botón 0", 6, 0, 1, 1)
- ("Botón 1", 6, 1, 1 , 1)
- ("Botón 2", 6, 2, 1, 1)
- ("Botón 3", 6, 3, 1, 1)
- ("Botón 4", 6, 4, 1, 1)
- ("Marco1", 0, 0, 3, 2)
- ("Frame2", 2, 0, 3, 2)
- ("Frame3", 0, 3, 6, 3)
Sin embargo, cuando ejecuto mi código, los botones y Frame3 sean impuestos bien, pero Frame1 verticalmente "aplasta" Frame2. Cualquier sugerencia sería muy apreciada. (He leído las respuestas sugeridas StackOverflow y ninguno parece proporcionar información que puede ser utilizada para resolver mi problema también, he buscado ampliamente en línea en vano..)
from Tkinter import *
class Application(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.master.title("Grid Manager")
self.master.rowconfigure(0, weight=1)
self.master.columnconfigure(0, weight=1)
for i in range(5):
self.master.button = Button(master, text = "Button {0}".format(i))
self.master.button.grid(row=6, column=i, sticky=W+E)
self.Frame1 = Frame(master, bg="red")
self.Frame1.grid(row = 0, column = 0, rowspan = 3, columnspan = 2, sticky = W+E+N+S)
self.Frame2 = Frame(master, bg="blue")
self.Frame2.grid(row = 2, column = 0, rowspan = 3, columnspan = 2, sticky = W+E+N+S)
self.Frame3 = Frame(master, bg="green")
self.Frame3.grid(row = 0, column = 2, rowspan = 6, columnspan = 3, sticky = W+E+N+S)
root = Tk()
app = Application(master=root)
app.mainloop()
ACTUALIZACIÓN: Ahora que estoy en mi ordenador personal, aquí están las imágenes para el resultado que quiero y el resultado que consigo, respectivamente:
Para cualquier persona que ejecute este ejemplo, la ventana inicialmente tiene una altura y un ancho limitados y debe cambiar su tamaño para confirmar que el código funciona. Alternativamente, dele una geometría predeterminada, 'root.geometry (" 400x200 + 200 + 200 ")' (justo después de 'root = Tk()'). –