python tkinter 生二维码保存

python 自带库的使用

import tkinter as tk
from tkinter import messagebox
from tkinter import filedialog
import qrcode
from PIL import Image, ImageTk

class QRCodeApp:
    def __init__(self, root):
        self.root = root
        self.root.title("QRCode Generator")


        self.url_entry = tk.Entry(self.root, font=("Arial", 14), width=40)
        self.url_entry.pack(pady=20)

        self.generate_button = tk.Button(self.root, text="Generate QR Code", font=("Arial", 14), command=self.generate_qr)
        self.generate_button.pack(pady=10)

        self.save_button = tk.Button(self.root, text="Save QR Code", font=("Arial", 14), command=self.save_qr)
        self.save_button.pack(pady=10)


        self.qr_label = tk.Label(self.root)
        self.qr_label.pack(pady=20)

    def generate_qr(self):

        url = self.url_entry.get()

        if not url:
            messagebox.showwarning("Input Error", "Please enter a URL to generate the QR code.")
            return


        qr = qrcode.QRCode(
            version=1,
            error_correction=qrcode.constants.ERROR_CORRECT_L,
            box_size=10,
            border=4,
        )
        qr.add_data(url)
        qr.make(fit=True)


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


        self.img_tk = ImageTk.PhotoImage(img)

        self.qr_label.config(image=self.img_tk)
        self.qr_label.image = self.img_tk

    def save_qr(self):
        url = self.url_entry.get()

        if not url:
            messagebox.showwarning("Input Error", "Please enter a URL to save the QR code.")
            return

        qr = qrcode.QRCode(
            version=1,
            error_correction=qrcode.constants.ERROR_CORRECT_L,
            box_size=10,
            border=4,
        )
        qr.add_data(url)
        qr.make(fit=True)

        img = qr.make_image(fill="black", back_color="white")
        file_path = filedialog.asksaveasfilename(defaultextension=".png",
                                                 filetypes=[("PNG files", "*.png"), ("All files", "*.*")],
                                                 title="Save QR Code")

        if file_path:
            img.save(file_path)
            messagebox.showinfo("Success", f"QR Code saved as {file_path}!")

if __name__ == "__main__":
    root = tk.Tk()
    app = QRCodeApp(root)
    root.mainloop()

posted @ 2025-07-03 17:54  vx_guanchaoguo0  阅读(14)  评论(0)    收藏  举报