import tkinter as tk
import random
def criar_postal_natal():
root = tk.Tk()
root.title("Postal de Natal")
root.geometry("600x400")
root.configure(bg="sky blue")
canvas = tk.Canvas(root, width=600, height=400, bg="sky blue")
canvas.pack()
# Definir as cores das luzes e suas posições
luzes = []
cores = ['red', 'green', 'yellow', 'blue'] # Cores das luzes
# Função para desenhar um presente
def desenhar_presente(x, y, largura, altura):
# Desenhar o corpo do presente
canvas.create_rectangle(x - largura / 2, y - altura / 2, x + largura / 2, y + altura / 2, fill="red",
outline="")
# Desenhar a fita horizontal
canvas.create_rectangle(x - largura / 2, y - 10, x + largura / 2, y + 10, fill="gold", outline="")
# Desenhar a fita vertical
canvas.create_rectangle(x - 10, y - altura / 2, x + 10, y + altura / 2, fill="gold", outline="")
# Desenhar o laço
desenhar_laco(x, y)
# Desenhar luzes de Natal no topo do presente
desenhar_luzes(x, y - altura / 2 - 10, largura)
# Função para desenhar um laço
def desenhar_laco(x, y):
# Parte central do laço
canvas.create_oval(x - 10, y - 10, x + 10, y + 10, fill="gold", outline="")
# Laços laterais (usando arcos)
canvas.create_arc(x - 50, y - 30, x - 10, y + 10, start=0, extent=180, fill="gold", outline="")
canvas.create_arc(x + 10, y - 30, x + 50, y + 10, start=0, extent=180, fill="gold", outline="")
# Fitas caindo do laço
canvas.create_line(x - 5, y + 10, x - 30, y + 50, fill="gold", width=3)
canvas.create_line(x + 5, y + 10, x + 30, y + 50, fill="gold", width=3)
# Função para desenhar luzes de Natal no topo do presente
def desenhar_luzes(x, y, largura):
# Desenhar as luzes e armazenar suas referências e cores
for i in range(8):
luz_x = x - largura / 2 + (i * (largura / 7)) # Posição horizontal das luzes
luz_y = y # Todas no mesmo nível
cor = random.choice(cores) # Escolher uma cor aleatória
luz = canvas.create_oval(luz_x - 5, luz_y - 5, luz_x + 5, luz_y + 5, fill=cor, outline="")
luzes.append((luz, cor)) # Armazenar luz e cor original
# Função para fazer as luzes piscar
def piscar_luzes():
for luz, cor in luzes:
# Alternar as cores das luzes (liga/desliga)
nova_cor = random.choice(cores) if canvas.itemcget(luz, "fill") == "" else ""
canvas.itemconfig(luz, fill=nova_cor)
# Chamar essa função repetidamente
root.after(500, piscar_luzes) # Alterar a cada 500ms (meio segundo)
desenhar_presente(300, 200, 150, 150) # Desenha o presente no centro da tela
# Mensagem "Feliz Natal"
canvas.create_text(300, 350, text="Feliz Natal!", font=("Arial", 36, "bold"), fill="red")
piscar_luzes() # Iniciar o efeito de piscar
root.mainloop()
criar_postal_natal()