[Python] não consigo fazer o icone aparecer

Discussão em 'Python' iniciado por Stack, Abril 12, 2025.

  1. Stack

    Stack Membro Participativo

    não parece o icone que eu coloquei quando criado o arquivo executavel ".exe" usei o TKinderinserir a descrição da imagem aqui

    usei isso no cmd pyinstaller --noconfirm --onefile --windowed --icon=icone.ico ^ --add-data "vectorizer.pkl;." ^ --add-data "melhor_modelo.pkl;." ^ --hidden-import sklearn ^ --hidden-import sklearn.utils._typedefs ^ --hidden-import sklearn.utils._heap ^ --hidden-import sklearn.neighbors._typedefs ^ --hidden-import sklearn.feature_extraction ^ --hidden-import sklearn.feature_extraction.text ^ app.py

    `import pickle import numpy as np import tkinter as tk from tkinter import messagebox import os import sys import ctypes # Para definir o ícone corretamente no Windows

    Função para obter o caminho correto dos arquivos no executável


    def resource_path(relative_path): try: base_path = sys._MEIPASS except Exception: base_path = os.path.abspath(".") return os.path.join(base_path, relative_path)

    Definir o App ID do Windows para o ícone


    ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID("SpamFenda.App.ID")

    Carregar arquivos pkl


    with open(resource_path("vectorizer.pkl"), "rb") as f: vectorizer = pickle.load(f)

    with open(resource_path("melhor_modelo.pkl"), "rb") as f: best_model = pickle.load(f)

    Função de verificação de e-mail


    def verificar_email(): email = entrada_email.get("1.0", tk.END).strip() if email == "": messagebox.showwarning("Aviso", "Digite o conteúdo do e-mail.") return

    vetor = vectorizer.transform().toarray()
    pred = best_model.predict(vetor)

    if pred[0] == 1:
    resultado.set(" Este e-mail é SPAM!")
    label_resultado.config(fg="#D32F2F") # Vermelho
    else:
    resultado.set("✅ Este e-mail é LEGÍTIMO!")
    label_resultado.config(fg="#388E3C") # Verde

    [SIZE=6][B]Função para limpar o campo de texto[/B][/SIZE]


    def limpar_texto(): entrada_email.delete("1.0", tk.END) resultado.set("")

    [SIZE=6][B]Janela principal[/B][/SIZE]


    janela = tk.Tk() janela.title("SpamFenda - Detector de SPAM") janela.geometry("600x500") janela.configure(bg="#F4F4F4")

    [SIZE=6][B]Ícone da janela[/B][/SIZE]


    icone_path = resource_path("icone.ico") if os.path.exists(icone_path): janela.iconbitmap(icone_path) # Definir o ícone da janela else: print(f"Erro: O arquivo de ícone {icone_path} não foi encontrado.")

    [SIZE=6][B]Centralizar a janela[/B][/SIZE]


    janela.update_idletasks() w = janela.winfo_width() h = janela.winfo_height() x = (janela.winfo_screenwidth() // 2) - (w // 2) y = (janela.winfo_screenheight() // 2) - (h // 2) janela.geometry(f"{w}x{h}+{x}+{y}")

    [SIZE=6][B]Barra de título[/B][/SIZE]


    bar_title = tk.Label(janela, text="SpamFenda - Detector de SPAM", font=("Segoe UI", 16, "bold"), bg="#FF7043", fg="white", height=2) bar_title.pack(fill="x")

    [SIZE=6][B]Card de entrada de e-mail[/B][/SIZE]


    card_entrada = tk.Frame(janela, bg="white", bd=2, relief="solid", padx=20, pady=20) card_entrada.pack(pady=20, padx=30, fill="x")

    titulo = tk.Label(card_entrada, text=" Verificador de E-mails", font=("Segoe UI", 20, "bold"), bg="white", fg="#333") titulo.pack(pady=10)

    entrada_email = tk.Text(card_entrada, height=10, wrap="word", font=("Segoe UI", 12), bg="#F0F0F0", bd=1, relief="flat") entrada_email.pack(padx=10, pady=10, fill="both", expand=True)

    [SIZE=6][B]Card dos botões[/B][/SIZE]


    card_botoes = tk.Frame(janela, bg="#F4F4F4") card_botoes.pack(pady=20)

    [SIZE=6][B]Botão de verificar[/B][/SIZE]


    botao_verificar = tk.Button( card_botoes, text=" Verificar E-mail", font=("Segoe UI", 12, "bold"), bg="#FF7043", fg="white", activebackground="#F4511E", activeforeground="white", padx=20, pady=10, bd=0, relief="flat", command=verificar_email ) botao_verificar.pack(side="left", padx=10)

    [SIZE=6][B]Botão de limpar[/B][/SIZE]


    botao_limpar = tk.Button( card_botoes, text=" Limpar", font=("Segoe UI", 12, "bold"), bg="#9E9E9E", fg="white", activebackground="#757575", activeforeground="white", padx=20, pady=10, bd=0, relief="flat", command=limpar_texto ) botao_limpar.pack(side="left", padx=10)

    [SIZE=6][B]Card de resultado[/B][/SIZE]


    card_resultado = tk.Frame(janela, bg="#F4F4F4") card_resultado.pack(pady=20, padx=30, fill="x")

    [SIZE=6][B]Resultado da verificação[/B][/SIZE]


    resultado = tk.StringVar() label_resultado = tk.Label( card_resultado, textvariable=resultado, font=("Segoe UI", 14, "bold"), bg="#F4F4F4", fg="#333333" ) label_resultado.pack(pady=10)

    [SIZE=6][B]Iniciar a interface[/B][/SIZE]


    janela.mainloop() `

    [url="https://pt.stackoverflow.com/questions/599305/n%c3%a3o-consigo-fazer-o-icone-aparecer"]Continue reading...[/url]

Compartilhe esta Página