Crear la ventana, pedir los valores de la base y de la altura (Entry).
Cuando el usuario teclee el botón calcular, visualizar el área, si los valores introducidos son correctos.
Diagrama
Se crea la ventana
# creamos la ventana
ventana = Tk()
# damos título a la ventana
ventana.title("Mi primer Ejercicio")
# la hacemos de dimensiones fijas
ventana.resizable(False, False)
# ancho y alto de la ventana
ventana.geometry("450x250")
# etiqueta del título del formulario (no de la ventana)
etiqueta_titulo = Label(ventana, text="Calcula el área de un triángulo")
etiqueta_titulo.grid(row=0, column=0, columnspan=2, padx=5, pady=3)
# etiqueta de la entrada de velocidad
etiqueta_altura = Label(ventana, text="Altura")
etiqueta_altura.grid(row=1, column=0, padx=5, pady=3)
# Entry de lectura de la altura
valor_altura = Entry(ventana, width=20)
valor_altura.grid(row=1,column=1)
# inserta valor inicial
valor_altura.insert(0, "0")
# etiqueta de la entrada de la base
etiqueta_base = Label(ventana, text="Base")
etiqueta_base.grid(row=2, column=0, padx=5, pady=3)
#Pedir la base
valor_base = Entry(ventana, width=20)
valor_base.grid(row=2, column=1)
# inserta valor inicial
valor_base.insert(0,"0")
notob_calcular = Button(ventana, text="Calcular área", width=20, command=calculoarea)
notob_calcular.grid(row=3, column=0, padx=5, pady=5)
Código realizar cálculos
Se inicializa la variable, para realizar la cálculo area = StringVar() . Cuando el usuario presione clic en el botón boton_calcular = Button(ventana, text="Calcular área", width=20, command=calculoarea). Dibuja la ventana.mainloop()
def calculoarea():
try:
# lee el valor de la altura escrita por el usuario
altura= valor_altura.get()
# lee el valor del ángulo escrito por el usuario
base = valor_base.get()
if float(altura)>0 and afloat(base>0):
# cálcula el área
calculo_area=float(base)*float(altura)/2
# escribe el resultado en la eiqueta
area.set("area: " + str(round(calculo_area,4)))
else:
area.set("Los datos deben ser mayores que cero")
except:
area.set("Error al teclear datos")
# asigna valor a la etiqueta
area = StringVar()
area.set("área: 0")
calculo_area = Label(ventana, textvariable=area) # asocia etiqueta y variable de control
calculo_area.grid(row=4, column=0, padx=5, pady=5)
ventana.mainloop()
Código Completo
from tkinter import *
def calculoarea():
try:
# lee el valor de la altura escrita por el usuario
altura= valor_altura.get()
# lee el valor del ángulo escrito por el usuario
base = valor_base.get()
if float(altura)>0 and float(base)>0:
# cálcula el área
calculo_area=float(base)*float(altura)/2
# escribe el resultado en la eiqueta
area.set("area: " + str(round(calculo_area,4)))
else:
area.set("Los datos deben ser mayores que cero")
except:
area.set("Error al teclear datos")
# creamos la ventana
ventana = Tk()
# damos título a la ventana
ventana.title("Mi primer Ejercicio")
# la hacemos de dimensiones fijas
ventana.resizable(False, False)
# ancho y alto de la ventana
ventana.geometry("450x250")
# etiqueta del título del formulario (no de la ventana)
etiqueta_titulo = Label(ventana, text="Calcula el área de un triángulo")
etiqueta_titulo.grid(row=0, column=0, columnspan=2, padx=5, pady=3)
# etiqueta de la entrada de velocidad
etiqueta_altura = Label(ventana, text="Altura")
etiqueta_altura.grid(row=1, column=0, padx=5, pady=3)
# Entry de lectura de la altura
valor_altura = Entry(ventana, width=20)
valor_altura.grid(row=1,column=1)
# inserta valor inicial
valor_altura.insert(0, "0")
# etiqueta de la entrada de la base
etiqueta_base = Label(ventana, text="Base")
etiqueta_base.grid(row=2, column=0, padx=5, pady=3)
#Pedir la base
valor_base = Entry(ventana, width=20)
valor_base.grid(row=2, column=1)
# inserta valor inicial
valor_base.insert(0,"0")
boton_calcular = Button(ventana, text="Calcular área", width=20, command=calculoarea)
boton_calcular.grid(row=3, column=0, padx=5, pady=5)
# variable de control de la etiqueta
area = StringVar()
# asigna valor a la etiqueta
area.set("área: 0")
calculo_area = Label(ventana, textvariable=area) # asocia etiqueta y variable de control
calculo_area.grid(row=4, column=0, padx=5, pady=5)
ventana.mainloop()