miércoles, 24 de agosto de 2022

Tkinter Factor Volumétrico del Gas

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