TKINTER
TKINTER

Reputation: 1

image "pyimage2" doesn't exist

This code of program is not running and showing error image "pyimage2" doesn't exist

import tkinter 
from PIL import ImageTk, Image

def imagine():
     window1 = tkinter.Tk()
     window1.geometry("1000x300")
     img = ImageTk.PhotoImage(Image.open("1.jpg"))
     label1= tkinter.Label(window1, image = img)
     label1.place(x=10,y=2)

window = tkinter.Tk()
window.geometry("1000x300")
img = ImageTk.PhotoImage(Image.open("1.jpg"))
label1= tkinter.Label(window, image = img)
label1.place(x=10,y=2)
b1 = tkinter.Button(window,text="E",width=50,command=imagine ).place(x=100,y=2)

i want image on window1 also

Upvotes: 0

Views: 108

Answers (1)

Kenji Martins
Kenji Martins

Reputation: 54

In the "imagine" you are trying to create a new instance of Tk() which already exists. (we can only have a single instance of Tk) For an additional window, create instance of Toplevel().

I tested your code with fix and new window open without any error, but the image still doesn't appear.

To fix this, I passed img as a parameter using the lambda function.

import tkinter 
from PIL import ImageTk, Image

def imagine(_img):
    
    window1 = tkinter.Toplevel() #creating new TopLevel window
    window1.geometry("1000x300")
    label1= tkinter.Label(window1, image= _img)
    label1.place(x=10,y=2)

window = tkinter.Tk()
window.geometry("1000x300")
img = ImageTk.PhotoImage(Image.open("1.jpg"))
#img2 = ImageTk.PhotoImage(Image.open("other image.jpg"))
label1= tkinter.Label(window, image = img)
label1.place(x=10,y=2)
b1 = tkinter.Button(window,text="E",width=50, command=lambda: imagine(img)).place(x=100,y=2)


window.mainloop()

Upvotes: 2

Related Questions