Canvas 如果代码在方法中,则不会显示 PhotoImage 图片
Canvas won't show a PhotoImage pic if the code is in a method
python 的新手,到目前为止大部分人都喜欢它,但这个问题很奇怪。完全相同的代码从根开始工作,但不是在方法中。
这不会渲染图像:
from tkinter import *
root = Tk()
def draw():
print("does not work")
canvas = Canvas(root, width = 300, height = 300)
canvas.pack()
img = PhotoImage(file="Db.png")
canvas.create_image(20,20, anchor=NW, image=img)
draw()
mainloop()
但这很好用:
from tkinter import *
root = Tk()
print("This works fine")
canvas = Canvas(root, width = 300, height = 300)
canvas.pack()
img = PhotoImage(file="Db.png")
canvas.create_image(20,20, anchor=NW, image=img)
mainloop()
如有任何帮助,我们将不胜感激。
正如 martineau 在上面的评论中解释的那样,代码的问题是 img 变量仅在函数处理时存在,它在函数 returns 之后被删除,并且需要我保留对图像对象。将其设为全局变量可解决此问题。
非常感谢!
python 的新手,到目前为止大部分人都喜欢它,但这个问题很奇怪。完全相同的代码从根开始工作,但不是在方法中。
这不会渲染图像:
from tkinter import *
root = Tk()
def draw():
print("does not work")
canvas = Canvas(root, width = 300, height = 300)
canvas.pack()
img = PhotoImage(file="Db.png")
canvas.create_image(20,20, anchor=NW, image=img)
draw()
mainloop()
但这很好用:
from tkinter import *
root = Tk()
print("This works fine")
canvas = Canvas(root, width = 300, height = 300)
canvas.pack()
img = PhotoImage(file="Db.png")
canvas.create_image(20,20, anchor=NW, image=img)
mainloop()
如有任何帮助,我们将不胜感激。
正如 martineau 在上面的评论中解释的那样,代码的问题是 img 变量仅在函数处理时存在,它在函数 returns 之后被删除,并且需要我保留对图像对象。将其设为全局变量可解决此问题。
非常感谢!