Cálculo del área de un Círculo. Y dibujo de un círculo

Enunciado

Cálculo del área de un triángulo.

Análisis:

  • 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.

Última actualización