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
Código. Método pack()
from tkinter import *
import math
def calculoarea():
try:
# lee el valor de la altura escrita por el usuario
radio= hueco_radio.get()
# lee el valor del ángulo escrito por el usuario
if float(radio)>0:
# cálcula el área
calculo_area=pow(float(radio),2)*math.pi
# escribe el resultado en la eiqueta
area.set("area: " + str(round(calculo_area,2)))
else:
area.set("Los datos deben ser mayores que cero")
except:
area.set("Error al teclear datos")
#Características de la ventana
ventana = Tk()
ventana.title("Este es mi primerjjj programa")
ventana.geometry("450x450")
ventana.resizable(False, False)
#Botones de la ventana creada
titulo=Label(ventana,text="Cálculo del área de un circulo")
titulo.pack()
radio_t=Label(ventana,text="Radio=")
radio_t.pack()
hueco_radio=Entry(ventana,width=10)
hueco_radio.pack()
boton=Button(ventana,text="Cálculo",command=calculoarea)
boton.pack()
#Crea la variable que se va a declarar
area=StringVar()
area.set("área: 0")
calculo_area = Label(ventana, textvariable=area)
calculo_area.pack()
ventana.mainloop()
Calcula y dibuja un círculo
Para incluir al código anterior que dibuje un círculo:
from tkinter import *
import math
def calculoarea():
try:
# lee el valor de la altura escrita por el usuario
radio = hueco_radio.get()
if float(radio) > 0:
# cálcula el área
calculo_area = pow(float(radio), 2) * math.pi
# escribe el resultado en la etiqueta
area.set("Área: " + str(round(calculo_area, 2)))
# Limpiar el canvas antes de dibujar un nuevo círculo
canvas.delete("all")
# Dibujar el círculo en el canvas
# Debemos asegurarnos de que el círculo quepa en el canvas
x0 = y0 = 50 # Coordenadas de inicio (esquina superior izquierda del círculo)
x1 = y1 = 50 + 2 * float(radio) # Coordenadas de fin (esquina inferior derecha del círculo)
canvas.create_oval(x0, y0, x1, y1, outline='blue', width=2)
else:
area.set("Los datos deben ser mayores que cero")
except ValueError:
area.set("Error al teclear datos")
hueco_radio.delete(0, END)
# Características de la ventana
ventana = Tk()
ventana.title("Este es mi primer programa")
ventana.geometry("450x450")
ventana.resizable(False, False)
# Botones de la ventana creada
titulo = Label(ventana, text="Cálculo del área de un círculo")
titulo.pack()
radio_t = Label(ventana, text="Radio=")
radio_t.pack()
hueco_radio = Entry(ventana, width=10)
hueco_radio.pack()
boton = Button(ventana, text="Cálculo", command=calculoarea)
boton.pack()
# Crea la variable que se va a declarar
area = StringVar()
area.set("Área: 0")
calculo_area = Label(ventana, textvariable=area)
calculo_area.pack()
# Agregar un canvas para dibujar el círculo
canvas = Canvas(ventana, width=300, height=300, bg='white')
canvas.pack()
ventana.mainloop()
Explicación
Canvas: He añadido un widget Canvas al final de la ventana. Este canvas tiene un tamaño de 300x300 píxeles con un fondo blanco.
Dibujar el Círculo: Dentro de la función calculoarea, después de calcular el área, limpia cualquier dibujo previo con canvas.delete("all") y luego dibujo el círculo utilizando canvas.create_oval(). Las coordenadas del círculo se calculan para que el círculo esté centrado respecto a su radio.
Manejo de Excepciones: He cambiado la captura de excepciones a ValueError para comprobar específicamente errores relacionados con conversiones de tipos no válidos, lo cual es más adecuado cuando se trata con entradas numéricas.