Mundo em Python

Percentagem em relação ao PIB

import requests
from tkinter import *
# Função para obter o PIB atualizado de Portugal através da API do Banco Mundial
def get_pib_portugal():
try:
# URL da API do Banco Mundial
url = "https://api.worldbank.org/v2/country/PRT/indicator/NY.GDP.MKTP.CD?format=json&per_page=1"
response = requests.get(url) # Requisição GET

# Verifica se a resposta foi bem-sucedida
if response.status_code == 200:
data = response.json()
pib = data[1][0]['value'] # Valor do PIB
ano = data[1][0]['date'] # Ano mais recente disponível
print(f"PIB de Portugal em {ano}: ${pib:,.2f}")
return pib
else:
print("Erro ao buscar os dados do PIB.")
return None
except Exception as e:
print(f"Ocorreu um erro ao buscar o PIB: {e}")
return None


# Variável global para armazenar o PIB (evita requisições repetidas)
pib_portugues = get_pib_portugal() # Configuração da janela principal
root = Tk()
root.geometry("700x300")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Percentagem em relação ao PIB") # Título principal
titulo = Label(root, text="Percentagem em relação ao PIB",
font=("Arial", 28, "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.08, rely=0.05) # Texto "Valor do indicador"
texto_sub1 = Label(root, text="Valor do indicador:",
font=("Arial", 18, "bold"), bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.2, rely=0.35) # Entrada do valor do indicador
Valor_indicador = StringVar()
Valor_indicador_entrada = Entry(root, textvariable=Valor_indicador,
font=("Arial", 12, "bold"),
bg="white", fg="blue", justify='center')
Valor_indicador_entrada.place(relx=0.55, rely=0.36, relwidth=0.35)
Valor_indicador_entrada.focus()
# Função para limpar campos
def limpar():
Valor_indicador_entrada.delete(0, END)
resultado_texto.config(text="")
# Função principal para cálculo
def app():
try:
global pib_portugues
if not pib_portugues:
resultado_texto.config(text="Erro ao obter o PIB. Tente novamente mais tarde.")
return

# Tenta converter o valor da entrada para float
Valor = float(Valor_indicador.get())
percentagem = (Valor / pib_portugues) * 100 # Cálculo da percentagem
mensagem = f"Percentagem face ao PIB português: {percentagem:.2f} %"
resultado_texto.config(text=mensagem)
except ValueError:
resultado_texto.config(text="Valor digitado inválido! Insira apenas números.")
# Botão "Calcular"
but1 = Button(root, text="Calcular", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=app)
but1.place(relx=0.1, rely=0.65, relwidth=0.25, relheight=0.1) # Botão "Limpar"
but_limpar = Button(root, text="Limpar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=limpar)
but_limpar.place(relx=0.4, rely=0.65, relwidth=0.25, relheight=0.1) # Botão "Sair"
but_sair = Button(root, text="Sair", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=root.destroy)
but_sair.place(relx=0.7, rely=0.65, relwidth=0.25, relheight=0.1) # Texto para exibir o resultado
resultado_texto = Label(root, text="", font=("Arial", 12, "bold"), bg="#cfe2f3")
resultado_texto.place(relx=0.05, rely=0.8, relwidth=0.9, relheight=0.15) # Loop principal
root.mainloop()
0