python tk画布中的隐形图像

时间:2017-05-30 10:33:59

标签: python python-3.x canvas tkinter

我使用PhotoImage()在python中打开了一个图像并将其放在画布上。但是,画布上没有任何内容。

为什么它没有在画布上显示或者我还需要做其他什么?

窗口和画布设置:

from tkinter import *

w = 960; h = 540

window = Tk()
window.title("Joe's Game")
window.geometry(str(w)+"x"+str(h))

canvas = Canvas(window, width=w, height=h)
canvas.configure(background='#2B2F37')
canvas.pack()
window.update()

图像设置:

block_mid = PhotoImage("images/block_mid.jpg")
block_cr = PhotoImage("images/block_corner_right.jpg")
block_cl = PhotoImage("images/block_corner_left.jpg")

block_1 = canvas.create_image(60,60,image = block_mid)

canvas.pack()
canvas.update()
window.update()

我检查了文件路径和名称,但我找不到原因。这对我来说并没有产生错误。此外,我在代码后尝试了canvas.pack()canvas.update()window.update(),但他们似乎没有做任何事情。

2 个答案:

答案 0 :(得分:0)

尝试以这种方式打开图片:

block_mid = PhotoImage(Image.open("images/block_mid.jpg"))
# all other images opened this way as well

答案 1 :(得分:0)

很可能会被垃圾收集所困扰。

你可以通过将图像绑定到python引用的永久物来阻止这种情况,例如:如果您在课堂上,请.With(rules => ...)CompositionRoot

即,在变量前添加window来处理图像。