Introdução
Este projeto irá guiá-lo através do processo de criação de um gerador de Código QR usando Python. Você aprenderá como criar um arquivo de projeto, importar as bibliotecas necessárias, definir a função de geração de Código QR, definir a função de salvamento de Código QR, criar a janela principal e os elementos para a interface do gerador de Código QR e executar a função principal.
👀 Pré-visualização

🎯 Tarefas
Neste projeto, você aprenderá:
- Como criar um gerador de Código QR usando Python
- Como importar bibliotecas como
qrcode,tkinterePIL - Como definir funções para gerar e salvar Códigos QR
- Como criar uma interface de usuário para gerar e salvar Códigos QR
🏆 Conquistas
Após concluir este projeto, você será capaz de:
- Usar a biblioteca
qrcodepara gerar Códigos QR - Usar a biblioteca
tkinterpara criar uma interface gráfica de usuário - Salvar Códigos QR gerados em arquivos
- Exibir Códigos QR gerados em uma tela (canvas)
Criar os arquivos do projeto
Para começar, crie um novo arquivo chamado qr_code_generator.py e abra-o no seu editor de código preferido.
cd ~/project
touch qr_code_generator.py
Importar as bibliotecas necessárias
No arquivo qr_code_generator.py, importe as seguintes bibliotecas no início do seu código:
import qrcode
import tkinter as tk
from tkinter import messagebox, filedialog
from PIL import ImageTk, Image
import os
Instale as bibliotecas necessárias usando o seguinte comando:
pip3 install qrcode pillow
Definir a função de geração de QR Code
Adicione o seguinte código para definir uma função chamada generate_qr, que recebe um parâmetro de texto e gera uma imagem de QR Code:
def generate_qr(text):
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=10,
border=4,
)
qr.add_data(text)
qr.make(fit=True)
img = qr.make_image(fill='black', back_color='white')
filename = 'qr_code.png'
img.save(filename)
return filename
Acima, usamos a biblioteca qrcode para gerar uma imagem de QR Code. A função generate_qr recebe um parâmetro de texto, que é o texto ou URL que o QR Code conterá. A função então cria um objeto QR Code com a versão especificada, nível de correção de erro, tamanho da caixa e borda. O texto é então adicionado ao objeto QR Code, e a imagem do QR Code é gerada e salva em um arquivo chamado qr_code.png. Finalmente, a função retorna o nome do arquivo da imagem do QR Code gerada.
Definir a função de salvamento do QR Code
Em seguida, adicione o seguinte código para definir uma função chamada save_qr, que permite ao usuário salvar o QR Code gerado:
def save_qr(filename):
filepath = filedialog.asksaveasfilename(defaultextension='.png', filetypes=[('PNG Images', '*.png')])
if filepath:
os.rename(filename, filepath)
messagebox.showinfo('QR Code Saved!')
A função recebe um parâmetro de nome de arquivo (filename), que é o nome do arquivo da imagem do QR Code gerada. A função então abre uma caixa de diálogo de arquivo, que permite ao usuário selecionar um local e nome de arquivo para salvar a imagem do QR Code. Se o usuário selecionar um local e nome de arquivo, a função renomeia a imagem do QR Code gerada para o nome de arquivo selecionado e exibe uma caixa de mensagem para informar ao usuário que o QR Code foi salvo.
Criar a janela principal e os elementos
Agora, adicione o seguinte código para definir uma função chamada create_window, que cria a janela principal, rótulos, campo de entrada, tela (canvas) e botões necessários para a interface do gerador de QR Code:
def create_window():
window = tk.Tk()
window.title('QR Code Generator')
label = tk.Label(window, text='Enter the text/URL:')
label.pack()
ent = tk.Entry(window)
ent.pack()
canvas = tk.Canvas(window, width=200, height=200)
canvas.pack()
def generate_and_display():
text = ent.get()
filename = generate_qr(text)
photo = ImageTk.PhotoImage(Image.open(filename))
canvas.create_image(100, 100, image=photo)
button2 = tk.Button(window, text='Save QR Code', command=lambda: save_qr(filename))
button2.pack()
window.mainloop()
button = tk.Button(window, text='Generate QR Code', command=generate_and_display)
button.pack()
window.mainloop()
Usamos a biblioteca tkinter para criar a janela principal, rótulos, campo de entrada, tela (canvas) e botões. A função create_window cria a janela principal e adiciona um rótulo e um campo de entrada para o usuário inserir o texto ou URL que o QR Code conterá. A função também cria uma tela (canvas), que será usada para exibir a imagem do QR Code gerada. A função então define uma função aninhada chamada generate_and_display, que obtém o texto do campo de entrada, gera uma imagem de QR Code e exibe a imagem do QR Code na tela (canvas). A função também cria um botão que permite ao usuário salvar a imagem do QR Code gerada. Finalmente, a função cria um botão que chama a função generate_and_display quando clicado.
Executar a função principal
Finalmente, adicione o seguinte código para executar a função create_window quando o arquivo for executado:
if __name__ == '__main__':
create_window()
generate_qr('Hello World!')
O bloco if __name__ == '__main__' garante que a função create_window seja executada apenas quando o arquivo for executado, e não quando for importado como um módulo. O bloco também chama a função generate_qr para gerar uma imagem de QR Code com o texto "Hello World!".
python qr_code_generator.py

Resumo
Você criou com sucesso um gerador de QR Code usando Python. Ao seguir este projeto passo a passo, você aprendeu como criar um arquivo de projeto, importar as bibliotecas necessárias, definir funções para geração e salvamento de QR Code, criar uma interface de usuário com Tkinter e executar o projeto para gerar e exibir QR Codes.



