#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. Вы правы, я, должно быть, случайно ввел его неправильно.