我在一个函数中创建了一个简单的 Canvas ,我想在 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')
当我运行代码时,我得到一个空白的 1280x720 窗口,没有图像。
我看过以下网站:http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm但我不明白如何将他们的示例应用到我的情况(如果这是我的问题,我不知道要创建对什么的引用或如何创建引用)。我还查看了一些堆栈溢出问题,但它们也没有帮助。
最佳答案
正确转义路径字符串中的反斜杠。 (或使用
r'raw string literal'
)。防止 PhotoImage 对象被垃圾回收。
使用
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')
关于python - tkinter Canvas 图像不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26479728/