Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Frames con tkinter
#1
Hola a todos:

Les escribo el código el cual crea una ventana y dentro de esta 3 frames:

  1. try:
  2.     import tkinter as tk
  3.     from tkinter import ttk
  4.     from tkinter import *
  5. except ImportError:
  6.     raise ImportError("Se requiere el modulo tkinter (tkinter3-tk)")
  7.  
  8. #creo la ventana
  9. ventana=tk.Tk()
  10. #dimension ventana
  11. ventana.geometry("1200x600")
  12. #título ventana
  13. ventana.title("Programación grafica con tkinter")
  14. #frame 1
  15. frame_titulo = Frame(ventana, width=1200, height=40,
  16.             bg="#566573",bd=5,relief="groove")
  17. frame_titulo.grid(row=0,column=0)
  18. #frame 2
  19. frame_campos= Frame(ventana, width=1200, height=400,bg="lightblue",
  20.                     bd=10,relief="flat")
  21. frame_campos.grid(row=1,column=0)
  22. #frame 3
  23. frame_botones= Frame(ventana, width=1000, height=40,bg="#566573",
  24.                   bd=10,relief="flat")
  25. frame_botones.grid(row=2,column=0)


Hasta aquí todo bien. Cuando ejecuto el siguiente código:

  1. Label(frame_titulo,text="Primer frame",
  2.     bg="#566573",fg="white",font=("Arial 16 bold")).grid(row=0,column=0)


El frame1 llamado frame_titulo se dimensiona al tamaño del label.

¿Que tengo que modificar del código para que pueda solucionarlo?

Saludos.

Diego.
Responder
#2
Hola, bienvenido.

Si vás a usar grid() para posicionar los elementos, tenés que tratar la ventana también como una grilla. Entonces, el primer paso es hacer que la primera columna (donde está tu frame_titulo) ocupe todo el ancho de la ventana:

  1. ventana.columnconfigure(0, weight=1)


Después, tenés que indicar que el frame_titulo tiene que expandirse a la izquierda y a la derecha a medida que se redimensiona la ventana, así:

  1. # w = west, izquierda; e = east, derecha
  2. frame_titulo.grid(row=0,column=0, sticky="we")


Y por último, si lo único que vas a tener en tu frame_titulo es una etiqueta, y querés que aparezca centrada, también expandís la sola columna que tiene tu frame:

  1. frame_titulo.columnconfigure(0, weight=1)


Todo esto está explicado acá: https://recursospython.com/guias-y-manua...n-tkinter/.

De todas formas, capaz no sea necesario que crees tantos Frames. Podés crear uno solo y vía grid() e ir dividiéndolo en filas y columnas (aunque un widget puede ocupar más de una fila y una columna). Ese fondo que creaste para frame_titulo, podría ser directamente el fondo de la etiqueta, y evitás crear un control adicional.

Saludos
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)