tkinter canvas image not displaying

  1. Escape backslashes in path string correctly. (or use r'raw string literal').

  2. Prevent PhotoImage object being garbage collected.

  3. specify the filename using file=... option.


def start(root):
    startframe = tkinter.Frame(root)
    canvas = tkinter.Canvas(startframe,width=1280,height=720)

    startframe.pack()
    canvas.pack()

    # Escape / raw string literal
    one = tkinter.PhotoImage(file=r'images\one.gif')
    root.one = one  # to prevent the image garbage collected.
    canvas.create_image((0,0), image=one, anchor='nw')

UPDATE

The two statements one = ... and root.one = one can be merged into one statement:

    root.one = one = tkinter.PhotoImage(r'images\one.gif')

How about canvas.update()? I was suffering a similar problem. I am using grid, so instead of .pack I needed to use .update.