Mundo em Python

Piadas aleatória

import random
from tkinter import *
from tkinter import messagebox
import json
import os # Lista de piadas
piadas = [
"Por que o livro de matemática se suicidou?\nPorque tinha muitos problemas!",
"Por que a vaca foi ao espaço?\nPara ver a Via Láctea!",
"O que o zero disse para o oito?\nBelo cinto!",
"Por que as estrelas não fazem faculdade?\nPorque elas já têm muitos 'astros'.",
"Por que o computador foi ao médico?\nPorque estava com um vírus!",
"Por que o livro de histórias não pode dormir?\nPorque ele tem muitos contos para contar!",
"Como se chama o rei dos queijos?\nReiqueijão!",
"O Paulo e a Ester tiveram um filho.\nSerá que se pode dizer que o filho deles é 100% poliéster?",
"Qual o contrário de paixão?\nMãeteto.",
"O que o martelo foi fazer no culto?\nPregar.",
"O que o zero disse ao oito?\nGostei do seu cinto!",
"Por que um policial estava interrogando um saco de cimento?\nPorque ele queria informações concretas.",
("Os asteriscos estavam fazendo uma festa.\nA certa altura alguém bateu na porta.\n"
"Um asterisco foi abrir: era um ponto.\n"
"- Você não pode entrar.\nVocê é um ponto, e esta é uma festa só para asteriscos.\n"
"- Não está me reconhecendo? É que eu passei gel…"),
"Como as galinhas fazem café?\nCom pó-pó-pó-pó-pó…",
"Qual a cor mais barulhenta?\nA corneta.",
"Qual é o animal que não vale mais nada?\nO javali.",
"Qual é o nome do profissional que pinta carros em inglês?\nCar-pinteiro.",
("Sabe por que os mergulhadores profissionais se sentam na borda do barco e se atiram para trás?\n"
"Porque se eles se atirassem para a frente cairiam dentro do barco."),
"Por que o bombeiro não gosta de andar?\nPorque ele socorre.",
"Por que o policial não gosta de sabão?\nPorque ele prefere detergente.",
"O que é um pontinho amarelo na limusine?\nÉ um 'milhonário'.",
("Joãozinho dirigiu-se à porta da sala de aula rapidamente,\nmas a professora o interrompeu:\n"
"- Joãozinho, aonde vai tão lesto e circunspecto?\n"
"- Estava indo ao banheiro, mas agora vou consultar um dicionário."),
"Quando você estiver triste é só abraçar um sapato.\nUm sapato consola.",
"Ana e César tiveram um filho.\nEle nasceu de cesariana.",
"Quem é mais velho: o Sol ou a Lua?\nA Lua, porque já pode sair sozinha à noite.",
"Como é que as freiras secam a roupa?\nConvento.",
("Uma pessoa passou dois dias inteiros dentro da piscina\n"
"e depois foi ao médico. Sabe qual foi o diagnóstico?\n"
"Nada demais."),
"Por que a aranha é o ser vivo mais carente do mundo?\nPorque ela é um aracneedyou.",
"Sabe por que o pinheiro não se perde na floresta?\nPorque ele tem uma pinha.",
"O que acontece quando chove na Inglaterra?\nVira Inglalama.",
"Qual é o nome do peixe que caiu do décimo andar do prédio?\nAhhhhhhh-tum!",
"O que uma pulga falou para a outra?\nVamos a pé ou esperamos pelo cão?",
("Dois planetas estão conversando: Marte: Miau!\nSaturno: Cale a boca!\n"
"Marte: Por quê? Saturno: Astronomia."),
("Um homem alto, muito alto mesmo, comeu um iogurte.\n"
"De tão alto que o homem era, quando o iogurte chegou ao estômago já estava fora do prazo."),
("Você sabe o que o livro de História disse ao livro de Matemática?\n"
"Não me venha com histórias que eu já estou cheio de problemas."),
"Por que as plantas pequenas não falam?\nPorque elas são mudas.",
"Sabe por que a panela procurou um terapeuta?\nPorque é uma panela depressão.",
"Sabe qual é o nome do intestino do boi em espanhol?\nIntestino del gado.",
"Que nome se dá a uma ferramenta perdida?\nFoice.",
("Joãozinho perguntou à professora:\n"
"- Professor, o que quer dizer “I don’t know”?\n- Eu não sei.\n"
"- Então quando souber me diz."),
("A mãe, preocupada, pergunta ao filho:\n"
"- Filho, por que você engoliu as moedas que te dei?\n"
"- Porque você me disse que eram para o lanche."),
("O pai pergunta ao filho:\n- Filho, você acha que a sua professora está\n"
"desconfiada de que sou que faço as suas tarefas?\n"
"- Acho que sim, pai.\nEla até mandou dizer para você voltar para a escola.")
] # Arquivo para salvar piadas favoritas
FAVORITES_FILE = 'favorites.json'


# Função para carregar piadas favoritas
def carregar_favoritos():
if os.path.exists(FAVORITES_FILE):
with open(FAVORITES_FILE, 'r', encoding='utf-8') as f:
return json.load(f)
else:
return []
# Função para salvar piadas favoritas
def salvar_favoritos(favoritos):
with open(FAVORITES_FILE, 'w', encoding='utf-8') as f:
json.dump(favoritos, f, ensure_ascii=False, indent=4)
# Inicialização das piadas favoritas
favoritos = carregar_favoritos() # Inicialização do índice atual
current_index = random.randint(0, len(piadas) - 1)
# Função para exibir uma nova piada
def nova_piada():
global current_index
current_index = random.randint(0, len(piadas) - 1)
piada = piadas[current_index]
texto_sub2.config(text=piada)
# Função para limpar o texto da piada
def limpar_piada():
texto_sub2.config(text="")
# Função para exibir a próxima piada
def proxima_piada():
global current_index
current_index = (current_index + 1) % len(piadas)
piada = piadas[current_index]
texto_sub2.config(text=piada)
# Função para exibir a piada anterior
def piada_anterior():
global current_index
current_index = (current_index - 1) % len(piadas)
piada = piadas[current_index]
texto_sub2.config(text=piada)
# Função para favoritar a piada atual
def favoritar_piada():
piada = piadas[current_index]
if piada not in favoritos:
favoritos.append(piada)
salvar_favoritos(favoritos)
messagebox.showinfo("Favorito", "Piada adicionada aos favoritos!")
else:
messagebox.showwarning("Favorito", "Esta piada já está nos favoritos.")
# Função para exibir as piadas favoritas
def ver_favoritos():
favoritos = carregar_favoritos()
if not favoritos:
messagebox.showinfo("Favoritos", "Você ainda não favoritou nenhuma piada.")
return

# Criar uma nova janela para exibir favoritos
fav_window = Toplevel(root)
fav_window.title("Piadas Favoritas")
fav_window.geometry("700x500")
fav_window.config(bg="#103030") fav_title = Label(fav_window, text="Piadas Favoritas",
font=("Arial", 24, "bold"), bg="#103030", fg="#49e3e3")
fav_title.pack(pady=10) # Frame com scrollbar para as piadas favoritas
frame = Frame(fav_window, bg="#103030")
frame.pack(fill=BOTH, expand=True, padx=10, pady=10) scrollbar = Scrollbar(frame)
scrollbar.pack(side=RIGHT, fill=Y) listbox = Listbox(frame, yscrollcommand=scrollbar.set, bg="#103030", fg="#49e3e3",
font=("Arial", 14), selectbackground="#107db2", selectforeground="white")
for idx, fav_piada in enumerate(favoritos, 1):
# Exibir a primeira linha ou a piada completa
primeira_linha = fav_piada.splitlines()[0]
listbox.insert(END, f"{idx}. {primeira_linha}")
listbox.pack(side=LEFT, fill=BOTH, expand=True)
scrollbar.config(command=listbox.yview) # Botão para ver a piada completa
def mostrar_completa(event):
selection = listbox.curselection()
if selection:
index = selection[0]
piada_completa = favoritos[index]
messagebox.showinfo("Piada Favorita", piada_completa) listbox.bind('<Double-1>', mostrar_completa) # Botão para remover piada favorita
def remover_favorito():
selection = listbox.curselection()
if selection:
index = selection[0]
piada_removida = favoritos.pop(index)
salvar_favoritos(favoritos)
listbox.delete(index)
messagebox.showinfo("Remover Favorito", "Piada removida dos favoritos.")
else:
messagebox.showwarning("Remover Favorito", "Selecione uma piada para remover.") but_remover = Button(fav_window, text="Remover Selecionada", bd=2, bg='#107db2', fg='white',
font=('Verdana', 12, 'bold'), command=remover_favorito)
but_remover.pack(pady=10)
# Configuração da janela principal
root = Tk()
root.geometry("750x500")
root.resizable(False, False)
root.config(bg="#103030")
root.title("Aleatório de Piadas") # Título
titulo = Label(root, text="Aleatório de Piadas",
font=("Arial", 28, "bold"), bg="#103030", fg="#49e3e3")
titulo.pack(pady=10) # Texto da piada
texto_sub2 = Label(root, text="",
font=("Arial", 16, "bold"), bg="#103030", fg="#49e3e3", wraplength=700, justify=LEFT)
texto_sub2.pack(pady=20) # Frame para os botões
frame_botoes = Frame(root, bg="#103030")
frame_botoes.pack(side=BOTTOM, pady=20) # Botão para gerar nova piada
but_nova = Button(frame_botoes, text="Nova Piada", bd=2, bg='#107db2', fg='white',
font=('Verdana', 12, 'bold'), command=nova_piada)
but_nova.pack(side=LEFT, padx=5, ipadx=10, ipady=5) # Botão para limpar a piada
but_limpar = Button(frame_botoes, text="Limpar", bd=2, bg='#107db2', fg='white',
font=('Verdana', 12, 'bold'), command=limpar_piada)
but_limpar.pack(side=LEFT, padx=5, ipadx=10, ipady=5) # Botão para exibir piadas favoritas
but_favoritos = Button(frame_botoes, text="Favoritos", bd=2, bg='#107db2', fg='white',
font=('Verdana', 12, 'bold'), command=ver_favoritos)
but_favoritos.pack(side=LEFT, padx=5, ipadx=10, ipady=5) # Botão para favoritar a piada atual
but_favoritar = Button(frame_botoes, text="Favoritar", bd=2, bg='#107db2', fg='white',
font=('Verdana', 12, 'bold'), command=favoritar_piada)
but_favoritar.pack(side=LEFT, padx=5, ipadx=10, ipady=5) # Botão para próxima piada
but_proxima = Button(frame_botoes, text="Próxima", bd=2, bg='#107db2', fg='white',
font=('Verdana', 12, 'bold'), command=proxima_piada)
but_proxima.pack(side=LEFT, padx=5, ipadx=10, ipady=5) # Botão para piada anterior
but_anterior = Button(frame_botoes, text="Anterior", bd=2, bg='#107db2', fg='white',
font=('Verdana', 12, 'bold'), command=piada_anterior)
but_anterior.pack(side=LEFT, padx=5, ipadx=10, ipady=5) # Botão para sair da aplicação
but_sair = Button(frame_botoes, text="Sair", bd=2, bg='#107db2', fg='white',
font=('Verdana', 12, 'bold'), command=root.destroy)
but_sair.pack(side=LEFT, padx=5, ipadx=10, ipady=5) # Exibir uma piada aleatória ao iniciar
nova_piada() # Iniciar a aplicação
root.mainloop()
0