miércoles, octubre 02, 2019

20.- Los widgets y su posición

En los ejemplos anteriores se ha utilizado pack() para posicionar en forma automática los elementos y alinearlos con los parámetros side y anchor. Cuando deseamos una alineación con varios elementos con el método pack() se ve un poco distorsionado y es necesario poner marcos, etiquetas y un campo de texto, así el marco hará de separador, entonces ¿Cómo podemos posicionar los widgets?
En este caso utilizamos una cuadrícula: grid() y asi distribuimos automáticamente los widgets, indicando una fila y una columna para cada widget, de esa forma eliminamos los separadores.
Para justificar o alinear las etiquetas al mismo lado, utilizamos el parámetro sticky (pegado) de la cuadrćula grid() incluso, podemos hacer uso del pad para ser más especifico en la alineación.
Los radiobutton nos permiten marcar una opción de entre varias, pero en nuestro caso solo proponemos una opción, para ello, utilizamos un checkbutton.
Para recuperar el valor de nuestra selección, se puede crear una función y añadir un comando al checkbutton para mostrar la imagen, en este caso, la foto en la etiqueta.

# importamos los modulos de tkinter
from tkinter import *
  
# creamos la ventana principal
ventana = Tk()

ventana.title('Probando Etiquetas')
#determinamos el ancho, alto y su ubicación
ventana.geometry('560x200+350+250')
# determinamos el color de fondo
ventana.config(bg = 'orange')
#creamos una etiqueta como titulo
etiqueta1 = Label(ventana,text="Lista de Personas",bg="red")
etiqueta1.pack(fill='x')
etiqueta1.grid(row=0, column=2, sticky = W, pady = 6)

# creamos dos etiquetas
etiqueta2 = Label(ventana, text = "Nombre")

etiqueta3 = Label(ventana, text = "APellido")
  
# determinamos las etiquetas en filas y columnas
etiqueta2.grid(row = 2, column = 0, sticky = W, pady = 2)
etiqueta3.grid(row = 3, column = 0, sticky = W, pady = 2)
  
# creamos dos entradas para el usuario
e1 = Entry(ventana)
e2 = Entry(ventana)
  
# determinamos las entradas y su posición
e1.grid(row = 2, column = 1, pady = 1)
e2.grid(row = 3, column = 1, pady = 1)
  
# creamos un chek y su posición
c1 = Checkbutton(ventana, text = "Foto")
c1.grid(row = 4, column = 0, sticky = W, columnspan = 2)
  
# importamos la imagen debe ser PNG y no jpg

img = PhotoImage(file = "cajamarquina.png")
img1 = img.subsample(4, 3)
  
# configuramos la imagen en la etiqueta
Label(ventana, image = img1).grid(row = 2, column = 3,
       columnspan = 2, rowspan = 2, padx = 10, pady = 7)
  
# creamos dos botones
btn1 = Button(ventana, text = "Aumentar",bg='yellow')
btn2 = Button(ventana, text = "Disminuir",bg='yellow')
  
# posicionamos los botones
btn1.grid(row = 4, column = 3, sticky = E)
btn2.grid(row = 4, column = 4, sticky = E)
  
# ejecutamos la aplicación
ventana.mainloop()

No hay comentarios.:

Publicar un comentario