python tk画布中的不可见图像

python tk画布中的不可见图像,python,python-3.x,canvas,tkinter,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) c

我使用
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()
,但它们似乎什么也没做。

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

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

它很可能在垃圾收集过程中被抓住

您可以通过将图像绑定到python引用的永久对象来防止这种情况,例如
窗口
self
(如果您在类中)


i、 例如,添加
窗口。
在与图像相关的变量前面。

PhotoImage(“images/block\u mid.jpg”)
目录中的图像,但默认路径是
/bin/
,请尝试打印图像的某些内容(作为文本)。使用sys.path.append(os.getcwd())进行基于自动解析的ır此返回错误:TypeError:str返回非字符串(type JpegImageFile)@JoeAllen,它到底抱怨哪一行?你检查路径是否正确了吗?我也没有在代码中看到
window.mainloop()
。我在代码的末尾看到了
window.mainloop()
,但无论是否存在,它都会给出相同的错误。完整的错误是:回溯(最近一次调用):文件“F:\stuff\Python\game\game.py”,第52行,在block\u 1=canvas.create\u image(60,60,image=block\u mid)文件“D:\apps\Python\lib\tkinter\u init.py”,第2483行,在create\u image return self.create('image',args,kw)文件“D:\apps\Python\lib\tkinter\u init.py”,第2474行,在_create*(args+self._options(cnf,kw)))类型错误:str返回非字符串(类型JpegImageFile)