【发布时间】:2019-06-14 23:03:19
【问题描述】:
- 在能够复制问题后更新。
最初我可以通过将键绑定到画布来使其工作,我不知道为什么会起作用,但后来它也停止工作了,所以我进一步调查。
在设置了一些测试之后,我设法编写了一个简短的代码来复制问题:
from tkinter import *
class SomeClass:
def __init__(self, master):
self.can = Canvas(master, bg="gray")
self.can.pack()
thing = PhotoImage(file=("./img/thing.PNG"))
img = self.can.create_image(20, 20, image=thing)
stuff = self.can.find_all()
print(stuff)
app = Tk()
SomeClass(app) # Does not work
something = SomeClass(app) # Dos not work
# This part does work:
can = Canvas(app, bg="gray")
can.pack()
thing = PhotoImage(file=("./img/thing.PNG"))
img = can.create_image(20, 20, image=thing)
stuff = can.find_all()
print(stuff)
app.mainloop()
在所有情况下,img 在 find_all() 中显示为一个项目,但前两个不会在画布上显示它。
还尝试将图像的创建作为一种绑定方法来激活它,认为它在初始化部分出错了。这并没有改变任何东西。
那么我在这里做错了什么?
【问题讨论】:
-
尝试将
Timeline()的实例分配给一个变量,例如timeline = Timeline(frame)。 -
试过了,没用。我设法制作了一个简短的代码来复制问题,但是,请参阅上面的更新问题。
-
对于您更新的代码,请将 SomeClass 中的
thing = ...更改为self.thing = ...。 -
同样的事情发生了,但刚刚想出答案,图像正在被垃圾收集,我只需要将图像设为全局或附加到某物。