miércoles, 8 de junio de 2022

Tkinter Densidad del Petróleo

Ahora se realiza la interfaz gráfica de la densidad del petróleo, 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("450x200")
Ventana.maxsize(450,200)
Ventana.minsize(450,200)
Ventana.title("Densidad del Petróleo")
Ventana.configure(background="gray80",highlightbackground="gray80",highlightcolor="black")
 
Recuadro_Entradas = tk.LabelFrame(Ventana)
Recuadro_Entradas.place(relx=0.01, rely=0.01, relheight=0.980, relwidth=0.980)
Recuadro_Entradas.configure(relief='groove',foreground="black",text='''Entradas''',background="gray80",highlightbackground="gray80",highlightcolor="black",width=330)
 
 
def Correlaciones_Densidad_Petroleo():
 
            try:
 
                        # P = 4000
                        # Pb = 2500
                        # T = 180  
                        # API = 31 
                        # Yg = 0.95
                        # Ppr = 1.54; Tpr = 1.30
 
                        P   = float(Entrada_1.get()) # psi
                        Pb  = float(Entrada_2.get()) # psi
                        T   = float(Entrada_3.get()) # °F
                        API = float(Entrada_4.get()) # °API
                        Yg  = float(Entrada_5.get())
                        Tpr = float(Entrada_6.get())
                        Ppr = float(Entrada_7.get()) 
 
                        if P <= 0:
 
                                   messagebox.showwarning("Advertencia!","La Presión es incorrecta")
 
                        elif Pb <= 0:
 
                                   messagebox.showwarning("Advertencia!","La Presión de burbuja es incorrecta")
 
                        elif T <= 0:
 
                                   messagebox.showwarning("Advertencia!","La Temperatura es incorrecta")
 
                        elif API <= 0:
 
                                   messagebox.showwarning("Advertencia!","La Gravedad API es incorrecta")
 
                        elif Yg <= 0:
 
                                   messagebox.showwarning("Advertencia!","La Densidad del gas es incorrecta")
 
                        elif Tpr <= 0:
 
                                   messagebox.showwarning("Advertencia!","La Temperatura pseudoreducida es incorrecta")
 
                        elif Ppr <= 0:
 
                                   messagebox.showwarning("Advertencia!","La Presión pseudoreducida es incorrecta")
 
                        else:
 
                                   Yo = 141.5/(API + 131.5)
 
                                   if P >= Pb:
 
                                               # Relación gas-petróleo del Petróleo
 
                                               Rs  = Yg*(((Pb/18.2)+1.4)*10**(0.0125*API-0.000917*T))**1.2048
 
                                               # Compresibilidad del Petróleo
 
                                               Co = (-1433+5*Rs+17.2*T-1180*Yg+12.61*API)/(Pb*10**5 )
 
                                               # Factor de Volmen del Petróleo
 
                                               F = Rs*((Yg/Yo)**0.526)+0.968*T
 
                                               Bob = 1+10**(-6.58511+2.91329*np.log10(F)-0.27683*(np.log10(F)**2))
 
                                               Bo = Bob*np.exp(Co*(Pb-P))
 
                                               #Densidad del petróleo
 
                                               Ygd = ((12.5+API)/50)-3.5715*10**(-6)*API*Rs
 
                                               Po = (350*Yo+0.0764*Ygd*Rs)/(5.615*Bo )
 
                                               Salida_1.delete(0,tk.END);Salida_1.insert(tk.END,Po)
 
                                   elif P <= Pb:
 
                                               # Relación gas-petróleo del Petróleo
 
                                               Rs  = Yg*(((P/18.2)+1.4)*10**(0.0125*API-0.000917*T))**1.2048
 
                                               # Factor de Volmen del Petróleo
 
                                               F = Rs*(np.sqrt(Yg/Yo))+1.25*T
 
                                               Bo = 0.9759+12*10**-5*F**1.2
 
                                               # Compresibilidad del Petróleo
 
                                               A = -7.573-1.450*np.log(P)-0.383*np.log(Pb)+1.402*np.log(T+460)+0.256*np.log(API)+0.449*np.log(Rs)
 
                                               Co = np.exp(A)
 
                                               #Densidad del petróleo
 
                                               Ygd = ((12.5+API)/50)-3.5715*10**(-6)*API*Rs
 
                                               Pob = (350*Yo+0.0764*Ygd*Rs)/(5.615*Bo )
 
                                               Po = Pob*np.exp(Co*(Pb-P))
 
                                               Salida_1.delete(0,tk.END);Salida_1.insert(tk.END,Po)
 
                                   else:
 
                                               print("La opción no se encuentra disponible")
                                              
            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
 
Densidad_Petróleo = Button(Recuadro_Entradas,activebackground="DarkOrange3",activeforeground="black",background="gray80",disabledforeground="#a3a3a3",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",pady="0",text='''Densidad del Petróleo''', command = Correlaciones_Densidad_Petroleo).place(relx = 0.50, rely = 0.81, height=25, width=210,bordermode='ignore')
 
Mensaje_1 = tk.Message(Recuadro_Entradas)
Mensaje_1.place(relx=0.02, rely=0.01, height=25, width=80)
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.21, rely=0.01, height=25, width=80)
Mensaje_2.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''Pb''')
Mensaje_3 = tk.Message(Recuadro_Entradas)
Mensaje_3.place(relx=0.40, rely=0.00, height=25, width=80)
Mensaje_3.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''T''')
Mensaje_4 = tk.Message(Recuadro_Entradas)
Mensaje_4.place(relx=0.60, rely=0.00, height=25, width=80)
Mensaje_4.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''°API''')
Mensaje_5 = tk.Message(Recuadro_Entradas)
Mensaje_5.place(relx=0.80, rely=0.00, height=25, width=80)
Mensaje_5.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''Yg''')
 
Mensaje_6 = tk.Message(Recuadro_Entradas)
Mensaje_6.place(relx=0.02, rely=0.30, height=25, width=80)
Mensaje_6.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''Tpr''')
Mensaje_7 = tk.Message(Recuadro_Entradas)
Mensaje_7.place(relx=0.21, rely=0.30, height=25, width=80)
Mensaje_7.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''Ppr''')
 
Mensaje_9 = tk.Label(Recuadro_Entradas)
Mensaje_9.place(relx=0.20, rely=0.62, height=25, width=60)
Mensaje_9.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''Resultado:''')
Mensaje_10 = tk.Label(Recuadro_Entradas)
Mensaje_10.place(relx = 0.65, rely = 0.62, height=25, width=50)
Mensaje_10.configure(background="gray80",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center',text='''lbs/pie^3''')
 
Entrada_1 = tk.Entry(Recuadro_Entradas)
Entrada_1.place(relx=0.02, rely=0.18, 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.21, rely=0.18, 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.40, rely=0.18, height=20, width=80)
Entrada_3.configure(background="white",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center')
Entrada_4 = tk.Entry(Recuadro_Entradas)
Entrada_4.place(relx=0.60, rely=0.18, height=20, width=80)
Entrada_4.configure(background="white",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center')
Entrada_5 = tk.Entry(Recuadro_Entradas)
Entrada_5.place(relx=0.80, rely=0.18, height=20, width=80)
Entrada_5.configure(background="white",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center')
 
Entrada_6 = tk.Entry(Recuadro_Entradas)
Entrada_6.place(relx=0.02, rely=0.46, height=20, width=80)
Entrada_6.configure(background="white",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center')
Entrada_7 = tk.Entry(Recuadro_Entradas)
Entrada_7.place(relx=0.21, rely=0.46, height=20, width=80)
Entrada_7.configure(background="white",foreground="#000000",highlightbackground="#d9d9d9",highlightcolor="black",justify='center')
 
Salida_1 = tk.Entry(Recuadro_Entradas)
Salida_1.place(relx=0.40, rely=0.64, height=20, width=100)
Salida_1.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)
Entrada_4.delete(0,tk.END);Entrada_4.insert(tk.END,"");Entrada_4.insert(tk.END,0.00)
Entrada_5.delete(0,tk.END);Entrada_5.insert(tk.END,"");Entrada_5.insert(tk.END,0.00)
Entrada_6.delete(0,tk.END);Entrada_6.insert(tk.END,"");Entrada_6.insert(tk.END,0.00)
Entrada_7.delete(0,tk.END);Entrada_7.insert(tk.END,"");Entrada_7.insert(tk.END,0.00)
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)
            Entrada_4.delete(0,tk.END);Entrada_4.insert(tk.END,"");Entrada_4.insert(tk.END,0.00)
            Entrada_5.delete(0,tk.END);Entrada_5.insert(tk.END,"");Entrada_5.insert(tk.END,0.00)
            Entrada_6.delete(0,tk.END);Entrada_6.insert(tk.END,"");Entrada_6.insert(tk.END,0.00)
            Entrada_7.delete(0,tk.END);Entrada_7.insert(tk.END,"");Entrada_7.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(Recuadro_Entradas,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.80, height=25, width=210)
 
Ventana.mainloop()
 
El código de vuelve lo siguiente:



No hay comentarios.:

Publicar un comentario