Sesión 8

En la octava sesión hemos continuado con la programación de interfaces gráficas y hemos avanzado conociendo nuevos elementos para diseñar  la interfaz. Concretamente hemos visto lo siguiente:

  • Repasado los aspectos que vimos en la sesión anterior.
  • Uso de las variables que suministra tkinter (StringVar() e IntVar()).
  • Obtener el valor de las variables de tkinter con el método get().
  • Asignar valores a la variables de tkinter con el método set().
  • Uso de cajas de texto (Entry) para poder suministrar información a nuestros programas.
  • Uso de objetos Listbox para mostrar y crear listas de elementos.

Para cubrir estos aspectos hemos realizado los siguientes programas a modo de ejemplos:

Programa 1:

El programa debe hacer lo siguiente:

  • Crear una ventana gráfica con un ancho de 600 pixeles y un alto de 200 pixeles.
  • Debe tener una etiqueta con el texto Nombre.
  • Debe tener un objeto Entry (caja de texto) donde el usuario pueda introducir su nombre.
  • Debe tener un botón con el texto Púlsame.
  • Al pulsar el botón debe mostrar en la consola de texto un saludo con el nombre introducido. Después de mostrar el saludo, debe cambiar el valor de la variable enlazada al objeto Entry y asignarle el valor ‘Julio’, por lo que debe mostrarse en la caja de texto dicho nombre.

El aspecto del programa será algo similar a las imágenes siguientes:

El texto para este programa es el siguiente:

from tkinter import *

def pulsar():
    print('Hola',nombre.get())
    nombre.set('Julio')

ventana=Tk()
ventana.geometry('600x200')

etiqueta=Label(ventana,text='Nombre:')
etiqueta.place(x=20,y=20)

boton=Button(ventana,text='Púlsame',command=pulsar)
boton.place(x=20,y=60)

nombre=StringVar()
cajatexto=Entry(ventana,textvariable=nombre)
cajatexto.place(x=100,y=20)

ventana.mainloop()
ventana=Tk()
ventana.geometry('600x200')

etiqueta=Label(ventana,text='Nombre:')
etiqueta.place(x=20,y=20)

boton=Button(ventana,text='Púlsame',command=pulsar)
boton.place(x=20,y=60)

nombre=StringVar()
cajatexto=Entry(ventana,textvariable=nombre)
cajatexto.place(x=100,y=20)

ventana.mainloop()

Programa 2:

El programa debe hacer lo siguiente:

  • Crear una ventana gráfica con un ancho de 600 pixeles y un alto de 200 pixeles.
  • Debe tener una etiqueta con el texto Número.
  • Debe tener un objeto Entry (caja de texto) donde el usuario pueda introducir un número.
  • Debe tener dos botones, Sumar 1 y Restar 1.
  • Al pulsar cada uno de los botones el programa debe recuperar el valor numérico del objeto Entry y aumentarle o disminuirle una unidad según el botón que se haya pulsado.

Al ejecutar el programa deberíamos obtener una imagen similar a:

El código de este programa es el siguiente:

from tkinter import *

def aumentar():
    n=numero.get()
    numero.set(n+1)

def disminuir():
    n=numero.get()
    numero.set(n-1)

ventana=Tk()
ventana.geometry('600x200')

et=Label(ventana,text='Número:')
et.place(x=50,y=20)

numero=IntVar()
caja=Entry(ventana,textvariable=numero)
caja.place(x=150,y=20)

boton=Button(ventana,text='Sumar 1',command=aumentar)
boton.place(x=350,y=15)

boton2=Button(ventana,text='Restar 1',command=disminuir)
boton2.place(x=350,y=45)

ventana.mainloop()

Programa 3:

En el siguiente programa vamos a introducir un nuevo objeto (Listbox) que nos servirá para añadir una lista de elementos.

Nuestro programa consistirá en lo siguiente:

  • Crear una ventana gráfica con un ancho de 500 pixeles y un alto de 300 pixeles.
  • Debe tener una etiqueta con el texto Nombre.
  • Debe tener un objeto Entry (caja de texto) donde el usuario pueda introducir un nombre.
  • Debe tener un botón y un objeto Listbox (caja de lista).
  • Al introducir un nombre en el objeto Entry y pulsar sobre el botón, el nombre se debe añadir al objeto Listbox..

Al ejecutar el programa deberíamos obtener una imagen similar a:

El código de este programa es el siguiente:

from tkinter import *

def anadir():
    n=nombre.get()
    if n!='':
        lista.insert(END,n)
        nombre.set('')

ventana=Tk()
ventana.geometry('500x300')

et=Label(ventana,text='Nombre:')
et.place(x=50,y=20)

nombre=StringVar()
caja=Entry(ventana,textvariable=nombre)
caja.place(x=50,y=50)

boton=Button(ventana,text='Añadir nombre',command=anadir)
boton.place(x=250,y=40)

lista=Listbox(ventana)
lista.place(x=50,y=80)

ventana.mainloop()

En esta octava y  última sesión hemos dedicado una parte a valorar y reflexionar sobre lo aprendido durante todos estos días y a conocer la valoración que los alumnos hacen de su participación en el programa Profundiza.

Igualmente les he indicado diversas páginas donde se puede obtener información para seguir aprendiendo y profundizando en la programación con Python.