Mundo em Python

Gerador de Convite para Festa

from tkinter import *
from tkinter import messagebox
from datetime import datetime def validar_data(data_str):
try:
datetime.strptime(data_str, "%d/%m/%Y")
return True
except ValueError:
return False

def validar_hora(hora_str):
try:
datetime.strptime(hora_str, "%H:%M")
return True
except ValueError:
return False


def gerar_convite():
anfitriao = anfitriao_var.get()
data = data_var.get()
hora = hora_var.get()
local = local_var.get()
mensagem = mensagem_text.get("1.0", END).strip() if not anfitriao or not data or not hora or not local:
messagebox.showwarning("Atenção", "Por favor, preencha todos os campos obrigatórios!")
return

if not validar_data(data):
messagebox.showwarning("Atenção", "Por favor, insira uma data válida no formato DD/MM/AAAA!")
return

if not validar_hora(hora):
messagebox.showwarning("Atenção", "Por favor, insira uma hora válida no formato HH:MM!")
return

convite = (
f"Você está convidado para uma festa!\n\n"
f"Anfitrião: {anfitriao}\n"
f"Data: {data}\n"
f"Hora: {hora}\n"
f"Local: {local}\n\n"
f"Mensagem: {mensagem}\n\n"
f"Esperamos por você!\n"
)
convite_texto.config(state=NORMAL) # Permitir edição temporária
convite_texto.delete("1.0", END) # Limpar o texto anterior
convite_texto.insert(INSERT, convite) # Inserir o novo texto do convite
convite_texto.config(state=DISABLED) # Desabilitar edição


# Criação da janela principal
root = Tk()
root.geometry("600x700")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Gerador de Convite para Festa") titulo = Label(root, text="Gerador de Convite para Festa",
font=("Arial", 28, "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.05, rely=0.05) texto_nome_anfitriao = Label(root, text="Nome do Anfitrião:",
font=("Arial", 17, "bold"), bg="#103030", fg="#49e3e3")
texto_nome_anfitriao.place(relx=0.05, rely=0.15) anfitriao_var = StringVar()
entrada_nome_anfitriao = Entry(root, textvariable=anfitriao_var,
font=("Arial", 12, "bold"),
bg="white", fg="blue", justify='center')
entrada_nome_anfitriao.place(relx=0.55, rely=0.15, relwidth=0.35) texto_data = Label(root, text="Data da Festa (DD/MM/AAAA):", font=("Arial", 17, "bold"),
bg="#103030", fg="#49e3e3")
texto_data.place(relx=0.05, rely=0.25) data_var = StringVar()
entrada_data = Entry(root, textvariable=data_var,
font=("Arial", 12, "bold"),
bg="white", fg="blue", justify='center')
entrada_data.place(relx=0.55, rely=0.25, relwidth=0.35) texto_hora = Label(root, text="Hora da Festa (HH:MM):", font=("Arial", 17, "bold"),
bg="#103030", fg="#49e3e3")
texto_hora.place(relx=0.05, rely=0.35) hora_var = StringVar()
entrada_hora = Entry(root, textvariable=hora_var,
font=("Arial", 12, "bold"),
bg="white", fg="blue", justify='center')
entrada_hora.place(relx=0.55, rely=0.35, relwidth=0.35) texto_local = Label(root, text="Local da Festa:", font=("Arial", 17, "bold"),
bg="#103030", fg="#49e3e3")
texto_local.place(relx=0.05, rely=0.45) local_var = StringVar()
entrada_local = Entry(root, textvariable=local_var,
font=("Arial", 12, "bold"),
bg="white", fg="blue", justify='center')
entrada_local.place(relx=0.55, rely=0.45, relwidth=0.35) # Texto e entrada para a mensagem especial
texto_mensagem = Label(root, text="Mensagem Especial:", font=("Arial", 17, "bold"),
bg="#103030", fg="#49e3e3")
texto_mensagem.place(relx=0.05, rely=0.55) mensagem_text = Text(root, font=("Arial", 12), width=35, height=5, bg="white", fg="blue")
mensagem_text.place(relx=0.55, rely=0.55, relwidth=0.35) but_gerar = Button(root, text="Gerar Convite", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=gerar_convite)
but_gerar.place(relx=0.35, rely=0.7, relwidth=0.3, relheight=0.1) convite_texto = Text(root, font=("Arial", 12), width=65, height=10, state=DISABLED, bg="#ffffff")
convite_texto.place(relx=0.05, rely=0.85, relwidth=0.9, relheight=0.15) root.mainloop()
0