tkinter 中损坏的图像 asksaveasfile

Corrupted image in tkinter asksaveasfile

我尝试使用 asksaveasfile 制作一个弹出式保存二维码图像 window,但它给了我一个损坏的图像文件。

This is what happens if you open it

我的代码:

root = Tk()

root.geometry("400x350")

root.title("QR Code Generator")

label = Label(text="QR Code Generator", fg="black", font="NexaHeavy")

label.pack(pady=20)


link_entry = Entry()
link_entry.insert(0, 'Link')
link_entry.pack(pady=50)


name_entry = Entry()
name_entry.insert(0, 'QR Code name')
name_entry.pack(pady=50)

def savefile():
    asksaveasfile(defaultextension='*.jpg', filetypes=[
        ("All types", '.*'),
        ("JPG File", ".jpg")
    ])

# Generate QR Code
def make():
    qr_code = qrcode.make(link_entry.get())  
    qr_codename = (f"{name_entry.get()}.png")
    qr_code.save(qr_codename, savefile())
   

make_button = Button(text="Make QR Code", command=make)
make_button.pack(pady=1)
     


root.mainloop()

如果要使用 asksaveasfile() 到 select 输出文件名,则不应使用 qr_codename = (f"{name_entry.get()}.png"):

构造文件名
def savefile():
    # return the selected file object
    return asksaveasfile(defaultextension='*.jpg', filetypes=[
        ("All types", '.*'),
        ("JPG File", ".jpg")
    ], mode="wb")  # must use binary mode for image data

# Generate QR Code
def make():
    qr_codename = savefile()
    if qr_codename:
        qr_code = qrcode.make(link_entry.get())
        qr_code.save(qr_codename)