Fases da Lua

from tkinter import *
import ephem
root = Tk()
root.geometry("400x400")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Fases da Lua")

titulo = Label(text="Fases da Lua",
font=("Arial", "40", "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.08, rely=0.05)

sub1 = Label(text="Dia: ", font=("Arial", "18", "bold"), bg="#103030", fg="#49e3e3")
sub1.place(relx=0.3, rely=0.25)

sub2 = Label(text="Mês: ", font=("Arial", "18", "bold"), bg="#103030", fg="#49e3e3")
sub2.place(relx=0.3, rely=0.4)

sub3 = Label(text="Ano: ", font=("Arial", "18", "bold"), bg="#103030", fg="#49e3e3")
sub3.place(relx=0.3, rely=0.55)

dia = StringVar()
dia_entrada = Entry(textvariable=dia, font=("Arial", "12", "bold"),
bg="white", fg="blue", justify='center')
dia_entrada.place(relx=0.55, rely=0.26, relwidth=0.2)
dia_entrada.focus()

mes = StringVar()
mes_entrada = Entry(textvariable=mes, font=("Arial", "12", "bold"),
bg="white", fg="blue", justify='center')
mes_entrada.place(relx=0.55, rely=0.4, relwidth=0.2)

ano = StringVar()
ano_entrada = Entry(textvariable=ano, font=("Arial", "12", "bold"),
bg="white", fg="blue", justify='center')
ano_entrada.place(relx=0.55, rely=0.55, relwidth=0.2)

def limpar():
dia_entrada.delete(0,END)
mes_entrada.delete(0,END)
ano_entrada.delete(0,END)
resultado_texto.config(text="")


def app():
try:
d = int(dia.get())
m = int(mes.get())
a = int(ano.get())
data = f"{a}/{m}/{d}"
observador = ephem.Observer()
observador.date = data
lua = ephem.Moon(observador)
fase = lua.phase
if fase < 0.25:
fase = "Lua Nova"
elif fase < 0.5:
fase = "Quarto Crescente"
elif fase < 0.75:
fase = "Lua Cheia"
else:
fase = "Quarto Minguante"

mensagem = f"A fase da lua em {d}/{m}/{a} é:\n {fase}"

if d > 31 or m > 12:
mensagem = "Erro de digitação."
elif ((d > 30 and (m == 4 or m == 6 or m == 9 or m == 11)) or
(d > 29 and m == 2) or
(d > 28 and m == 2 and not (a % 4 == 0 and (a % 100 != 0 or a % 400 == 0))) or
(d > 31 and (m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12))):
mensagem = "Erro de digitação."
resultado_texto.config(text=mensagem)
except ValueError:
resultado_texto.config(text="Erro de digitação!!")



but1 = Button(text="Mostrar", 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)

but_limpar = Button(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)

but_sair = Button(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)

resultado_texto = Label(font=("Arial", 12, "bold"), bg="#cfe2f3")
resultado_texto.place(relx=0.05, rely=0.8, relwidth=0.9, relheight=0.15)

root.mainloop()

#Outra versão


from tkinter import *
import datetime

def calcular_fase_lua(ano, mes, dia):
if mes < 3:
ano -= 1
mes += 12
mes += 1

dias_desde_epoca = 365.25 * ano + 30.6 * mes + dia - 694039.09
dias_desde_epoca /= 29.53058867
fase_lua = dias_desde_epoca % 1

idade_lua = fase_lua * 29.53058867

if idade_lua < 1.84566:
return "Lua Nova"
elif idade_lua < 5.53699:
return "Lua Crescente"
elif idade_lua < 9.22831:
return "Quarto Crescente"
elif idade_lua < 12.91963:
return "Lua Gibosa Crescente"
elif idade_lua < 16.61096:
return "Lua Cheia"
elif idade_lua < 20.30228:
return "Lua Gibosa Minguante"
elif idade_lua < 23.99361:
return "Quarto Minguante"
elif idade_lua < 27.68493:
return "Lua Minguante"
else:
return "Lua Nova"

root = Tk()
root.geometry("600x200")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Fases da Lua")

titulo = Label(text="Fases da Lua de Hoje", font=("Arial", "25", "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.25, rely=0.05)

data = datetime.date.today()
mes = data.month
dia = data.day
ano = data.year

mensagem = calcular_fase_lua(ano, mes, dia)
tempo = f"A fase da Lua para {data} \né {mensagem}."

sub1 = Label(text=tempo, font=("Arial", "18", "bold"), bg="#103030", fg="#49e3e3")
sub1.place(relx=0.25, rely=0.45)

root.mainloop()

Comentários

Mensagens populares deste blogue

Criar Cartões de Visita

12 signos egípcios

Análise de Probabilidades