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:
- 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.
- ttk (themed Tkinter): É uma extensão da biblioteca tkinter que permite aplicar estilos personalizados aos widgets, melhorando a aparência visual.
- 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.
- 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.