image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
Vinicius Carvalho
Vinicius Carvalho08/10/2023 10:42
Compartilhe

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

  • #Python

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
Recomendados para você
Suzano - Python Developer
BairesDev - Machine Learning Practitioner
Santander - Cibersegurança #2
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.