tkinter画布图像不显示

时间:2014-10-21 05:51:03

标签: python python-3.x tkinter

我在一个函数中创建了一个简单的画布,我想在画布上显示一个图像。

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

当我运行代码时,我得到一个空白的1280x720窗口,没有图像。

我查看了以下网站:http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm但我不明白如何将他们的示例应用于我的情况(我不知道如何创建引用或如何创建引用,如果这是我的问题)。我也看了一些堆栈溢出问题,但它们也没有帮助。

2 个答案:

答案 0 :(得分:15)

  1. 正确转义路径字符串中的反斜杠。 (或使用r'raw string literal')。

  2. 防止PhotoImage对象被垃圾收集。

  3. 使用file=...选项指定文件名。


  4. 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')
    

    <强>更新

    两个语句one = ...root.one = one可以合并为一个语句:

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

答案 1 :(得分:0)

canvas.update()怎么样?我遇到了类似的问题。我正在使用网格,因此我需要使用.pack来代替.update