2016-09-29 141 views
-2

我写了一个方法来创建一个画布帆布更新Tkinter的Python的

但我看到画布不更新和GUI元素不更新

请指导在这里,我要实现新的游戏功能

+0

你试过'self.canvas.destroy()'? – TigerhawkT3

+0

是的,谢谢它为我工作... – Star123

回答

1

删除对Tkinter小部件的所有引用(如Canvas)不一定会从Tkinter应用程序中删除该对象(或其子小部件)。你可以用小脚本测试:

import tkinter as tk 
root = tk.Tk() 
def f(): 
    tk.Label(root, text='hi').pack() 

f() 

Label没有提及过保存,这是函数的局部范围,无论如何,但它仍然存在。如果您想摆脱Tkinter小部件,请使用其destroy方法。

self.canvas.destroy() 
self.canvas = tk.Canvas(self, width=2000, height=800) 
... 

注意,它仍然是很好的做法,以保持您的Tkinter对象的引用,这样就可以与他们的工作(如要求他们destroy(),例如),以及一些Tkinter的对象时,有没有更多的实际上是被丢弃对图像对象的引用(如Canvas.create_imageLabel所使用的)。