Python Tkinter开发二维码生成工具无法获取Entry输入内容的问题
问题根因
你的代码有3个核心逻辑错误,导致无法读取输入生成有效二维码:
- 程序启动阶段就执行了
qrcode.make(e1.get()),此时输入框为空,直接生成了空白二维码对象赋值给全局变量img,后续打开按钮默认调用的就是这个初始空白对象 - 生成按钮的回调逻辑错误:
qrcode.make(e1.get())生成的新二维码对象没有赋值给img变量,且img.save("")传入空字符串作为保存路径,无法正常写入文件;用and连接两个操作的写法不符合tkinter回调的逻辑预期,新生成的二维码根本没有被持久化保存 - 没有在用户点击生成按钮的时机重新读取输入框内容、更新全局
img对象,打开按钮始终读取的是程序启动时生成的空白二维码
修复方案
直接替换原有代码即可,修复点包括:移除启动时自动生成空白二维码的逻辑、给生成按钮编写独立回调函数正确读取输入并生成/保存二维码、给打开按钮增加空判断避免报错、指定固定的二维码保存文件名。
import qrcode import tkinter from PIL import Image # 初始化全局二维码对象 img = None main = tkinter.Tk("Link converter to QrCode ") main.title("Link converter to Qr Code") main.geometry("685x85") link = tkinter.Label( main, width="30", text='Link:') link.grid(row=0) e1 = tkinter.Entry( main, bd="5", width="75") e1.grid(row=0, column=1) def create_qrcode(): global img # 读取输入框内容,去除首尾空白 input_content = e1.get().strip() if not input_content: return # 基于输入内容生成二维码 img = qrcode.make(input_content) # 保存二维码到本地文件 img.save("generated_qr.png") button_create = tkinter.Button( main, text="Click to create the Qrcode.", command=create_qrcode ) button_create.grid(row=2, column=1) def open_qrcode(): # 未生成二维码时不执行打开操作 if img: img.show() button_open = tkinter.Button ( main, text="Click here to open the Qrcode", command=open_qrcode, width="25") button_open.grid(row=2, column=0) exit_button = tkinter.Button( main, width=15, text='Exit', command=main.quit) exit_button.grid(row=4, column=0) main.mainloop()
使用说明
运行程序后在输入框填入完整链接,先点击「Click to create the Qrcode.」按钮生成二维码,再点击打开按钮即可查看对应二维码,生成的图片会保存在程序运行目录下的generated_qr.png文件中。
内容的提问来源于stack exchange,提问作者user19193204
相关产品推荐
相关产品推荐

