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 但我不明白如何将他们的例子应用到我的情况中(我不知道创建对什么的引用或如何创建引用,如果这是我的问题)。我还查看了一些堆栈溢出问题,但它们也没有帮助。

原文由 Thedudxo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 576
2 个回答
  1. 正确转义路径字符串中的反斜杠。 (或使用 r'raw string literal' )。

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

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


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

原文由 falsetru 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

原文由 David Rall 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题