как добавить изображение в tkinter?

#python-3.x #image #tkinter

#python-3.x #изображение #tkinter

Вопрос:

Я не могу добавить изображение (gif-картинку) в окно tkinter.

 from tkinter import *
from tkinter import filedialog
from PIL import ImageTk, Image
root = Tk()
def open_image():
    qr_select = filedialog.askopenfilename(title = "open")
    im = PhotoImage(file=qr_select)
    w1 = Label(window, image = im)
    w1.image = im
    w1.config(image=im)
    w1.pack(side="right")
def window_function():
    global window
    window=Tk()
    window.geometry("800x550 650 250")
    window.title("QR_Scanner")
    btn = Button(window,text = "open a gif picture",command = open_image)
    btn.pack()
    root.iconify()
    window.mainloop()

btn = Button(root,text = "open window",command = window_function)
btn.pack()

root.mainloop()
  

моя ошибка (_tkinter.Ошибка TclError: изображение «pyimage1» не существует)

Ответ №1:

Причина, по которой вы не видите свой gif в окне, заключается в том, что вы не сделали ссылку на изображение, поэтому оно собирается в сборщике мусора Tkinters. Подробнее об этом читайте здесь. Чтобы добавить ссылку на изображение, вы можете сделать это:

 w1.image = im
  

И добавьте его в свой код здесь:

 def open_image():
    qr_select = filedialog.askopenfilename(title = "open")
    im = PhotoImage(file=qr_select)
    w1 = Label(root, image = im)
    w1.image = im #Keep A Reference To The Image
    w1.config(image=im)
    w1.pack(side="right")
  

Причина, по которой вы получаете, что pyimage1 не существует, заключается в том, что у вас есть более одного экземпляра Tk, и там должен быть только 1. Вы должны сделать свое окно a Toplevel() , заменив: window=Tk() на window=TopLevel()

Комментарии:

1. Извините, я не заметил, я посмотрю

2. Я отредактировал вопрос, надеюсь, это решит вашу проблему!

3. большое вам спасибо. но TopLevel() неверен, мы должны написать Toplevel().

4. Вы правы, я, должно быть, случайно ввел его неправильно.