import tkinter as tk
from tkinter import messagebox
import qrcode
from PIL import Image, ImageTk
class GeradorQRApp:
def __init__(self, root):
self.root = root
self.root.title("Gerador de Códigos QR")
self.root.geometry("450x550")
self.root.config(bg="#f4f4f4")
# Título
self.label_titulo = tk.Label(root, text="Gerador de Códigos QR", font=("Arial", 16, "bold"), bg="#f4f4f4")
self.label_titulo.pack(pady=20)
# Instrução
self.label_instrucao = tk.Label(root, text="Insere o texto ou link para gerar o QR Code:", font=("Arial", 10),
bg="#f4f4f4")
self.label_instrucao.pack(pady=5)
# Campo de Entrada
self.entrada = tk.Entry(root, font=("Arial", 12), width=35)
self.entrada.pack(pady=10)
self.entrada.bind("<Return>", lambda event: self.gerar_qr())
# Botão Gerar
self.btn_gerar = tk.Button(root, text="Gerar QR Code", font=("Arial", 10, "bold"), command=self.gerar_qr,
bg="#007ACC", fg="white", padx=10, pady=5)
self.btn_gerar.pack(pady=10)
# Área para exibir a imagem do QR Code
self.label_imagem = tk.Label(root, bg="#f4f4f4")
self.label_imagem.pack(pady=15)
self.img_qrcode = None # Mantém a referência da imagem para evitar que o Python a apague da memória
def gerar_qr(self):
texto = self.entrada.get().strip()
if not texto:
messagebox.showerror("Erro", "Por favor, insere um texto ou link válido!")
return
# Criar o objeto QR Code
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
qr.add_data(texto)
qr.make(fit=True)
# Gerar a imagem em formato PIL
img = qr.make_image(fill_color="black", back_color="white")
# Redimensionar para caber confortavelmente na janela
img = img.resize((200, 200), Image.Resampling.LANCZOS)
# Converter para formato compatível com o Tkinter
self.img_qrcode = ImageTk.PhotoImage(img)
# Atualizar o rótulo para mostrar a imagem
self.label_imagem.config(image=self.img_qrcode)
if __name__ == "__main__":
root = tk.Tk()
app = GeradorQRApp(root)
root.mainloop()