Every widget needs parent. If you don't use it then tkinter assigs widget to main window.

And you have this problem in Label(image = poke) because you forgot win in

pika = Label(win, image=poke)
This is why you see rectangle in main window instead of toplevel window.

Second: There is bug in PhotoImage. Garbage Collector removes it from memory when it is created in function and assigned to local...