Tkinter, image not appearing in function but without function

Marc 'BlackJack' Rintsch bj_666 at gmx.net
Sun Apr 13 13:12:48 EDT 2008


On Sun, 13 Apr 2008 08:57:29 -0700, skanemupp wrote:

> why is the first program not working? when i click the screen the map
> is not appearing.
> 
> the second program works.
> 
> 
> 
> from Tkinter import *
> 
> master = Tk()
> 
> w = Canvas(master, width=700, height=600)
> w.pack(expand = YES, fill = BOTH)
> 
> def mapper():
>     mapq = PhotoImage(file = 'C:\Users\saftarn\Desktop\world-map.gif')
>     w.create_image(10, 10, image = mapq, anchor = NW)
> 
> def key(event):
>     print "pressed", repr(event.char)
> 
> def callback(event):
>     w.focus_set()
>     print "clicked at", event.x, event.y
>     mapper()
>     print 'yo'
>     square = w.create_oval(event.x-5,event.y-5,event.x+5,event.y+5,
> fill="black")
> 
> w.bind("<Key>", key)
> w.bind("<Button-1>", callback)
> w.pack()
> 
> 
> mainloop()

Python doesn't know that the Tk side still needs the image and frees the
memory when `mapper()` is done and `mapq` the only name to the `PhotoImage`
instance goes out of scope.

Ciao,
	Marc 'BlackJack' Rintsch



More information about the Python-list mailing list