如何更改二维码的颜色?

How do I change the colour of my QR code?

我想用python制作一个二维码。输出为白色背景,黑色二维码。我该如何更改它们?

from tkinter import *
import os
import pyqrcode

window = Tk()
window.geometry("550x350")
window.configure(bg="#0434a0")
window.title("QR Code Maker")
photo = PhotoImage(file = "logo.png")
window.iconphoto(False, photo)

def generate():
    if len(Subject.get())!=0 :
        global qr,photo
        qr = pyqrcode.create(Subject.get())
        photo = BitmapImage(data = qr.xbm(scale=8))
    else:
        messagebox.showinfo("Voer een URL in...")
    try:
        showcode()
    except:
        pass

def showcode():
    imageLabel.config(image = photo)
    subLabel.config(text="QR van " + Subject.get())

可以在此处找到此模块的文档:PyQRCode Module Documentation

它说这个模块的各种方法(例如png,如果你想将QR码作为png图像获取)需要一个background参数,让你定义背景颜色,以及代码本身的 module_color 参数。

pyqrcode 模块已超过 5 年未更新。请改用 qrcode 模块。请注意,qrcode 模块需要 Pillow 模块。

...
from PIL import ImageTk
import qrcode
...
def generate():
    try:
        subject = Subject.get().strip()
        if len(subject) != 0:
            # adjust border and box_size to suit your case
            qr = qrcode.QRCode(border=2, box_size=10)
            qr.add_data(subject)
            # change fill_color and back_color to whatever you want
            img = qr.make_image(fill_color='blue', back_color='cyan')
            photo = ImageTk.PhotoImage(img)
            showcode(subject, photo)
        else:
            messagebox.showinfo("Voer een URL in...")
    except Exception as ex:
        print(ex)

def showcode(subject, photo):
    imageLabel.config(image=photo)
    imageLabel.image = photo # keep a reference of the image to avoid garbage collection
    subLabel.config(text="QR van " + subject)
...

请注意,我将照片和主题传递给 showcode() 而不是使用全局变量。

建议将showcode()中的代码合并到generate()中。