Article image
Vinicius Carvalho
Vinicius Carvalho08/10/2023 10:42
Compartilhe

Gerador de QR Code em Python com Interface Gráfica - Para Iniciantes

    Introdução:

    Este artigo apresenta um código Python que permite aos usuários gerar QR Codes com facilidade por meio de uma interface gráfica simples. O código utiliza a biblioteca tkinter para criar a interface de usuário e a biblioteca qrcode para gerar os QR Codes. Além disso, ele oferece sugestões de conteúdo que podem ser transformados em QR Codes e permite que os usuários escolham onde salvar o arquivo gerado.

    Função do Código:

    O principal objetivo do código é criar uma aplicação de desktop que facilite a geração de QR Codes a partir de texto inserido pelos usuários. O código oferece uma interface amigável em que os usuários podem inserir o texto desejado, clicar em um botão para gerar o QR Code correspondente e escolher o local onde o arquivo do QR Code será salvo.

    O que pode ser transformado em QR Code:

    O código oferece sugestões aos usuários sobre o tipo de conteúdo que pode ser transformado em QR Codes. As sugestões incluem:

    • URLs: para direcionar os usuários para um site específico.
    • Texto: para incluir informações de texto simples.
    • Endereço de Email: para criar um QR Code que, quando lido, abre um cliente de email com o endereço preenchido.
    • Número de Telefone: para criar um QR Code que, quando lido, inicia uma chamada para o número especificado.
    • Contato VCard: para gerar um QR Code contendo informações de contato, como nome, endereço de email e número de telefone.

    Bibliotecas Utilizadas:

    O código utiliza várias bibliotecas para funcionar corretamente:

    1. tkinter: Esta biblioteca é a principal responsável pela criação da interface gráfica da aplicação. Ela fornece widgets como botões, etiquetas e entradas de texto.
    2. ttk (themed Tkinter): É uma extensão da biblioteca tkinter que permite aplicar estilos personalizados aos widgets, melhorando a aparência visual.
    3. qrcode: Utilizada para criar os QR Codes com base no texto inserido pelos usuários. Ela oferece controle sobre o tamanho e a correção de erros dos QR Codes.
    4. Pillow (PIL): Essa biblioteca é usada para processar imagens, em particular para converter os QR Codes gerados em formatos de bytes que podem ser exibidos na interface gráfica.

    Código:

    import tkinter as tk

    from tkinter import ttk, filedialog

    import qrcode

    from PIL import Image, ImageTk

    import io

    # Sugestões de coisas que podem ser adicionadas para o QR Code

    sugestoes_texto = (

        "Exemplos de coisas para adicionar ao QR Code:\n"

        "- URL\n"

        "- Texto\n"

        "- Endereço de Email\n"

        "- Número de Telefone\n"

        "- Contato VCard\n"

    )

    # Função para gerar o QR Code

    def gerar_qrcode():

        # Obtém o texto da entrada de texto

        texto = entrada_texto.get()

        # Cria um objeto QRCode

        qr = qrcode.QRCode(

            version=1,

            error_correction=qrcode.constants.ERROR_CORRECT_L,

            box_size=10,

            border=4,

        )

       

        # Adiciona o texto ao QRCode

        qr.add_data(texto)

        qr.make(fit=True)

        # Cria uma imagem do QRCode

        img = qr.make_image(fill_color="black", back_color="white")

        # Converte a imagem em um formato de bytes

        img_byte_array = io.BytesIO()

        img.save(img_byte_array, format="PNG")

        img_byte_array = img_byte_array.getvalue()

        # Cria uma imagem PhotoImage a partir dos bytes

        img_bytes = Image.open(io.BytesIO(img_byte_array))

        qr_image = ImageTk.PhotoImage(img_bytes)

        # Exibe a imagem em uma etiqueta

        qr_label.config(image=qr_image)

        qr_label.image = qr_image

        # Salva a imagem como um arquivo PNG

        file_path = filedialog.asksaveasfilename(defaultextension=".png", filetypes=[("Arquivos PNG", "*.png")])

        if file_path:

            with open(file_path, 'wb') as f:

                f.write(img_byte_array)

            status_label.config(text=f"QR Code gerado e salvo como '{file_path}'.")

    # Cria a janela principal

    janela = tk.Tk()

    janela.title("Gerador de QR Code")

    # Cria um estilo para melhorar a aparência dos widgets

    style = ttk.Style()

    style.configure('TButton', foreground="blue", font=('Helvetica', 12))

    # Cria uma etiqueta com informações úteis e sugestões

    info_label = ttk.Label(janela, text="Digite o texto abaixo e clique em 'Gerar QR Code'.", font=('Helvetica', 12))

    info_label.pack(pady=10)

    sugestoes_label = ttk.Label(janela, text=sugestoes_texto, font=('Helvetica', 12))

    sugestoes_label.pack()

    # Cria uma entrada de texto

    entrada_texto = ttk.Entry(janela, font=('Helvetica', 12))

    entrada_texto.pack()

    # Cria um botão para gerar o QR Code

    botao_gerar = ttk.Button(janela, text="Gerar QR Code", command=gerar_qrcode)

    botao_gerar.pack(pady=10)

    # Cria uma etiqueta para exibir o QR Code gerado

    qr_label = ttk.Label(janela)

    qr_label.pack()

    # Cria uma etiqueta para exibir informações de status

    status_label = ttk.Label(janela, text="", font=('Helvetica', 12))

    status_label.pack()

    # Inicia o loop da interface gráfica

    janela.mainloop()

    Contribuições dos Leitores:

    Este código fornece uma base sólida para a criação de um gerador de QR Code com interface gráfica em Python. No entanto, sempre há espaço para melhorias e expansões, por isso, sintam-se a vontade para colaborar na melhoria dele com sugestões.

    Compartilhe
    Comentários (1)
    Robson Mendonça
    Robson Mendonça - 08/10/2023 18:33

    Suas dicas e orientações foram extremamente úteis, e estou ansioso para ver mais artigos como este no futuro. Continuar compartilhando seu conhecimento e experiência é uma forma valiosa de enriquecer nossa comunidade de desenvolvedores.