On Apr 13, 11:12 am, Marc 'BlackJack' Rintsch <[EMAIL PROTECTED]> wrote: > 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
...so you should do something like this(untested): def mapper(height, width, widget, img, position): widget.create_image(height, width, image=img, anchor=position) w = Canvas(master, width=700, height=600) w.pack(expand = YES, fill = BOTH) #Create a permanent reference to the image, i.e. the variable is not #created inside a function: my_img = PhotoImage(file = 'C:\Users\saftarn\Desktop\world-map.gif') mapper(10, 10, w, my_img, NW) -- http://mail.python.org/mailman/listinfo/python-list