【发布时间】:2019-07-20 20:19:37
【问题描述】:
我正在尝试在 tkinter GUI 中显示 QR 码,但是当我执行此代码时:
import tkinter as tk
from PIL import Image,ImageTk
import pyqrcode
from tkinter.font import Font
import random
root=tk.Tk()
root.title("QR Lottery")
root.config(bg="white")
# Defining Fonts
TitleFont = Font(family="HEX:gon Staggered 2", size="48")
def generateQR():
num=random.randint(1,2)
if num==1:
QRCode=pyqrcode.create("You Win!")
QRCode.png("QRCode.png",scale=8)
img = Image.open('QRCode.png')
QRCodeImg = ImageTk.PhotoImage(img)
QRCodeLabel=tk.Label(image=QRCodeImg)
QRCodeLabel.grid(row=2,column=1)
else:
QRCode=pyqrcode.create("You Lose!")
QRCode.png("QRCode.png",scale=8)
img = Image.open('QRCode.png')
QRCodeImg = ImageTk.PhotoImage(img)
QRCodeLabel=tk.Label(image=QRCodeImg)
QRCodeLabel.grid(row=2,column=1)
#Labels
TitleLabel=tk.Label(text="qr lottery",bg="white",font=TitleFont)
TitleLabel.grid(row=1,column=1,columnspan=5)
ButtonQR=tk.Button(text="Generate!",bg="white",command=generateQR)
ButtonQR.grid(row=3,column=1)
root.mainloop()
生成的图像标签是一个空白方块。我不确定为什么会这样,因为我将背景颜色留为空白。
【问题讨论】:
-
又是
PhotoImage中的错误问题,它从内存中删除了图像,您只能看到空方块。阅读文档:PhotoImage -
@norok2 不是骗子,因为我已按照您提供的答案进行操作,但没有产生预期的结果。
-
对于您的情况,只需在
generateQR()函数体的末尾添加generateQR.img = QRCodeImg以保留图像的引用。但是,不建议每次点击生成按钮时都重新创建二维码标签。
标签: python image tkinter qr-code