Answer a question

I have a simple canvas being created in a function, and i would like an image displayed on the canvas.

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

    startframe.pack()
    canvas.pack()

    one = tkinter.PhotoImage('images\one.gif')
    canvas.create_image((0,0),image=one,anchor='nw')

when i run the code i get a blank 1280x720 window, no image.

i have looked at the following website: http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm but i do not understand how to apply their example to my situation (i dont know what to create a reference to or how to create a reference, if that is my problem). I have also looked at some stack overflow questions but they did not help either.

Answers

  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')
Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐