Esta entrada es la última referida a las
propiedades del gas, la entrada trata acerca del Factor Volumétrico del Gas,
este programa cuenta con dos formas de obtener el factor volumétrico del gas y
con dos formas de obtener la expansión del gas. A continuación se muestra el código
completo:
import math as math
from tkinter import *
import tkinter as tk
from tkinter import ttk
import numpy as np
from tkinter import messagebox
Ventana = Tk()
Ventana.geometry("300x200")
Ventana.maxsize(300,200)
Ventana.minsize(300,200)
Ventana.title("Factor Volumétrico del
Gas")
Ventana.configure(background="gray80",highlightbackground="gray80",highlightcolor="black")
Recuadro_Entradas = tk.LabelFrame(Ventana)
Recuadro_Entradas.place(relx=0.01, rely=0.01,
relheight=0.35, relwidth=0.980)
Recuadro_Entradas.configure(relief='groove',foreground="black",text='''Entradas''',background="gray80",highlightbackground="gray80",highlightcolor="black",width=330)
Mensaje_1 = tk.Message(Recuadro_Entradas)
Mensaje_1.place(relx=0.01, rely=0.04, height=25,
width=50)
Mensaje_1.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''P''')
Mensaje_2 = tk.Message(Recuadro_Entradas)
Mensaje_2.place(relx=0.01, rely=0.51, height=25,
width=50)
Mensaje_2.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''T''')
Mensaje_3 = tk.Message(Recuadro_Entradas)
Mensaje_3.place(relx=0.52, rely=0.04, height=25,
width=50)
Mensaje_3.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''Z''')
Entrada_1 = tk.Entry(Recuadro_Entradas)
Entrada_1.place(relx=0.2, rely=0.04, height=20,
width=80)
Entrada_1.configure(background="white",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center')
Entrada_2 = tk.Entry(Recuadro_Entradas)
Entrada_2.place(relx=0.2, rely=0.52, height=20,
width=80)
Entrada_2.configure(background="white",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center')
Entrada_3 = tk.Entry(Recuadro_Entradas)
Entrada_3.place(relx=0.715, rely=0.04, height=20,
width=80)
Entrada_3.configure(background="white",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center')
Entrada_1.delete(0,tk.END);Entrada_1.insert(tk.END,"");Entrada_1.insert(tk.END,0.00)
Entrada_2.delete(0,tk.END);Entrada_2.insert(tk.END,"");Entrada_2.insert(tk.END,0.00)
Entrada_3.delete(0,tk.END);Entrada_3.insert(tk.END,"");Entrada_3.insert(tk.END,0.00)
Recuadro_Correlaciones = tk.LabelFrame(Ventana)
Recuadro_Correlaciones.place(relx=0.01, rely=0.36,
relheight=0.27, relwidth=0.980)
Recuadro_Correlaciones.configure(relief='groove',foreground="black",text='''Correlaciones
Disponibles''',background="gray80",highlightbackground="gray80",highlightcolor="black",width=330)
Valores = ["Bg (PCY/PCN)","Bg
(BY/PCN)" ,"Eg (PCN/PCY)" ,"Eg (PCN/BY)"]
Variable = tk.StringVar()
Visor_correlaciones =
ttk.Combobox(Recuadro_Correlaciones)
Visor_correlaciones.place(relx=0.02, rely=0.40,
height=25, width=280, bordermode='ignore')
Visor_correlaciones.configure(takefocus="",state="readonly",textvariable
= Variable, justify = "center",values = Valores)
Visor_correlaciones.current(0)
def Correlaciones_Bg(event):
try:
"""Z
= 0.78
T
= 180+460
P
= 3400"""
P
= float(Entrada_1.get()) # psi
T
= float(Entrada_2.get()) # °F
Z
= float(Entrada_3.get()) #
if
P <= 0:
messagebox.showwarning("Advertencia!","La
Presión es incorrecta")
elif
T <= 0:
messagebox.showwarning("Advertencia!","La
Temperatura es incorrecta")
elif
Z <= 0:
messagebox.showwarning("Advertencia!","El
Factor de compresibilidad del gas es incorrecto")
else:
if
str(Variable.get()) == Valores[0]:
Bg
= 0.02827*((Z*(T+460))/P) # PCY/PCN
Salida_1.delete(0,tk.END);Salida_1.insert(tk.END,Bg)
Mensaje_9.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''PCY/PCN''')
elif
str(Variable.get()) == Valores[1]:
Bg
= 0.00503*((Z*(T+460))/P) # BY/PCN
Salida_1.delete(0,tk.END);Salida_1.insert(tk.END,Bg)
Mensaje_9.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''BY/PCN''')
elif
str(Variable.get()) == Valores[2]:
Eg
= (35.37*P)/(Z*(T+460)) # PCN/PCY
Salida_1.delete(0,tk.END);Salida_1.insert(tk.END,Eg)
Mensaje_9.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''PCN/PCY''')
Mensaje_4.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='left',text='''Eg''')
elif
str(Variable.get()) == Valores[3]:
Eg
= (198.8*P)/(Z*(T+460)) # PCN/BY
Salida_1.delete(0,tk.END);Salida_1.insert(tk.END,Eg)
Mensaje_9.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''PCN/BY''')
Mensaje_4.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='left',text='''Eg''')
else:
print("Error
al realizar la selección de la opción")
except
ZeroDivisionError:
messagebox.showwarning("Advertencia!","Los
datos ingresados son incorrectos, por favor revisalos")
except
SyntaxError:
messagebox.showwarning("Advertencia!","Los
datos ingresados son incorrectos, por favor revisalos")
except
ValueError:
messagebox.showwarning("Advertencia!","Los
datos ingresados son incorrectos, por favor revisalos")
finally:
pass
return
Visor_correlaciones.bind('<<ComboboxSelected>>',
Correlaciones_Bg)
Recuadro_Salidas = tk.LabelFrame(Ventana)
Recuadro_Salidas.place(relx=0.01, rely=0.63,
relheight=0.22, relwidth=0.980)
Recuadro_Salidas.configure(relief='groove',foreground="black",text='''Salidas''',background="gray80",highlightbackground="gray80",highlightcolor="black",width=330)
Mensaje_4 = tk.Label(Recuadro_Salidas)
Mensaje_4.place(relx=0.10, rely=0.01, height=25,
width=80)
Mensaje_4.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='left',text='''Bg''')
Mensaje_9 = tk.Label(Recuadro_Salidas)
Mensaje_9.place(relx = 0.69, rely = 0.01,
height=25, width=50)
Mensaje_9.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''PCY/PCN''')
Salida_1 = tk.Entry(Recuadro_Salidas)
Salida_1.place(relx=0.35, rely=0.01, height=20,
width=80)
Salida_1.configure(background="white",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center')
Salida_1.delete(0,tk.END);Salida_1.insert(tk.END,"");Salida_1.insert(tk.END,0.00)
def Limpiando():
Entrada_1.delete(0,tk.END);Entrada_1.insert(tk.END,"");Entrada_1.insert(tk.END,0.00)
Entrada_2.delete(0,tk.END);Entrada_2.insert(tk.END,"");Entrada_2.insert(tk.END,0.00)
Entrada_3.delete(0,tk.END);Entrada_3.insert(tk.END,"");Entrada_3.insert(tk.END,0.00)
Salida_1.delete(0,tk.END);Salida_1.insert(tk.END,"");Salida_1.insert(tk.END,0.00)
return
Limpieza =
Button(Ventana,activebackground="OliveDrab4",activeforeground="black",background="gray80",disabledforeground="#a3a3a3",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",pady="0",text='''Limpieza''',
command = Limpiando).place(relx = 0.01, rely = 0.87, height=24, width=293)
Ventana.mainloop()
El código devuelve lo siguiente:

No hay comentarios.:
Publicar un comentario