Está en la página 1de 4

GUTIERREZ CHINININ LUIS 1911110422

INTERFAZ INICIAL
import tkinter as tk

# Función para crear una nueva ventana


def crear_ventana(opcion):
ventana_secundaria = tk.Toplevel()
ventana_secundaria.title(opcion)
label = tk.Label(ventana_secundaria, text="Has seleccionado la opción: " + opcion)
label.pack(padx=20, pady=20)

# Función para obtener la opción seleccionada


def obtener_opcion():
seleccion = var.get()
crear_ventana(seleccion)

# Crear una ventana principal


ventana = tk.Tk()

# Crear un frame para los botones


frame = tk.Frame(ventana, width=300, height=200, bg='white')
frame.pack(fill=tk.BOTH, expand=True)

# Crear una variable para almacenar la opción seleccionada


var = tk.StringVar()

# Crear los botones de selección


rb1 = tk.Radiobutton(frame, text="Linea Bifilar", variable=var, value="Linea Bifilar")
rb1.pack(pady=10)
rb2 = tk.Radiobutton(frame, text="Cable Coaxial", variable=var, value="Cable Coaxial")
rb2.pack(pady=10)
rb3 = tk.Radiobutton(frame, text="Linea de placas paralelas", variable=var, value="Linea de
placas paralelas")
rb3.pack(pady=10)

# Crear un botón para obtener la opción seleccionada


boton = tk.Button(frame, text="Obtener opción", command=obtener_opcion)
boton.pack(pady=10)

# Mostrar la ventana principal


ventana.mainloop()

CALCULO
import tkinter as tk
# Función para calcular la impedancia característica de la línea bifilar
def calc_bifilar(f, a, d, R, L, C, G):
Z0 = (30 / (2 * 3.1416)) * ((1 / (C * ((2 * 3.1416 * f) ** 2))) ** 0.5) * (
(2 * 3.1416 * f) * ((L + R) / (2 * (C ** 2))) + 1) ** 0.5
return Z0

# Función para calcular la impedancia característica del cable coaxial


def calc_coaxial(f, a, d, R, L, C, G):
Z0 = (120 * 3.1416) / ((d / a) * ((G + (2 * 3.1416 * f * C) ** 0.5) / (R + (2 * 3.1416 * f * L) **
0.5)) ** 0.5)
return Z0

# Función para calcular la impedancia característica de la línea de placas paralelas


def calc_placas(f, a, d, R, L, C, G):
Z0 = (60 / (2 * 3.1416)) * (
(2 * (3.1416 * f * C) ** 0.5) / ((L + R) * (1 + (2 * (3.1416 * f * C * (d / a)) ** 2)) **
0.5))
return Z0

# Función para calcular la impedancia característica según la opción seleccionada


def calc_impedancia():
# Obtener los valores ingresados por el usuario
f = float(freq_entry.get())
a = float(radio_entry.get())
d = float(distancia_entry.get())

# Verificar si se seleccionó alta o baja frecuencia


if frecuencia.get() == 1: # Baja frecuencia
R = float(resistencia_entry.get())
L = float(inductancia_entry.get())
C = float(capacitancia_entry.get())
G = float(conductancia_entry.get())
else: # Alta frecuencia
R = 0.0
L = 0.0
C = float(capacitancia_entry.get())
G = 0.0

# Calcular la impedancia característica según la opción seleccionada


if opcion.get() == 1: # Línea bifilar
Z0 = calc_bifilar(f, a, d, R, L, C, G)
elif opcion.get() == 2: # Cable coaxial
Z0 = calc_coaxial(f, a, d, R, L, C, G)
else: # Línea de placas paralelas
Z0 = calc_placas(f, a, d, R, L, C, G)
# Mostrar el resultado en una ventana emergente
result_window = tk.Toplevel(root)
result_window.title("Resultado")
result_label = tk.Label(result_window, text=f"Impedancia característica: {Z0:.2f} Ohms")
result_label.pack()

# Crear la ventana principal


root = tk.Tk()
root.title("Cálculo de Impedancia Característica")

# Marco principal
main_frame = tk.Frame(root, padx=20, pady=20)
main_frame.pack()

# Campos de entrada
input_frame = tk.LabelFrame(main_frame, text="Ingresar Valores")
input_frame.pack(padx=10, pady=10)

# Tipo de linea de transmision


opcion_frame = tk.LabelFrame(root, text="Tipo de Línea de Transmisión")
opcion_frame.pack(fill="both", expand="yes", padx=20, pady=10)
# Etiquetas
frecuencia = tk.IntVar()
frecuencia.set(1)
freq_label = tk.Label(input_frame, text="Frecuencia:")
freq_label.grid(row=0, column=0)
freq_entry = tk.Entry(input_frame)
freq_entry.grid(row=0, column=1)

radio_label = tk.Label(input_frame, text="Radio (a):")


radio_label.grid(row=1, column=0)
radio_entry = tk.Entry(input_frame)
radio_entry.grid(row=1, column=1)

distancia_label = tk.Label(input_frame, text="Distancia entre alambres (d):")


distancia_label.grid(row=2, column=0)
distancia_entry = tk.Entry(input_frame)
distancia_entry.grid(row=2, column=1)

opcion = tk.IntVar()
opcion.set(1)
opcion_label = tk.Label(input_frame, text="Seleccionar tipo de línea:")
opcion_label.grid(row=3, column=0)
bifilar_radio = tk.Radiobutton(input_frame, text="Línea Bifilar", variable=opcion, value=1)
bifilar_radio.grid(row=3, column=1, sticky=tk.W)
coaxial_radio = tk.Radiobutton(input_frame, text="Cable Coaxial", variable=opcion, value=2)
coaxial_radio.grid(row=4, column=1, sticky=tk.W)
placas_radio = tk.Radiobutton(input_frame, text="Línea de Placas Paralelas",
variable=opcion, value=3)
placas_radio.grid(row=5, column=1, sticky=tk.W)

frecuencia_label = tk.Label(input_frame, text="Seleccionar frecuencia:")


frecuencia_label.grid(row=6, column=0)
alta_frecuencia_radio = tk.Radiobutton(input_frame, text="Alta Frecuencia",
variable=frecuencia, value=2)
alta_frecuencia_radio.grid(row=7, column=1, sticky=tk.W)
baja_frecuencia_radio = tk.Radiobutton(input_frame, text="Baja Frecuencia",
variable=frecuencia, value=1)
baja_frecuencia_radio.grid(row=8, column=1, sticky=tk.W)

resistencia_label = tk.Label(input_frame, text="Resistencia (R):")


resistencia_label.grid(row=9, column=0)
resistencia_entry = tk.Entry(input_frame)
resistencia_entry.grid(row=9, column=1)

inductancia_label = tk.Label(input_frame, text="Inductancia (L):")


inductancia_label.grid(row=10, column=0)
inductancia_entry = tk.Entry(input_frame)
inductancia_entry.grid(row=10, column=1)

capacitancia_label = tk.Label(input_frame, text="Capacitancia (C):")


capacitancia_label.grid(row=11, column=0)
capacitancia_entry = tk.Entry(input_frame)
capacitancia_entry.grid(row=11, column=1)

conductancia_label = tk.Label(input_frame, text="Conductancia (G):")


conductancia_label.grid(row=12, column=0)

También podría gustarte