2017-04-25 130 views
1

我非常沮丧,因为它是完全愚蠢的,为什么它不工作。Tkinter帆布,删除图像

我:

import random as rand 
import time 
import tkinter 

root = tkinter.Tk() 
canvas = tkinter.Canvas(root, height = 800, width = 1300) 
canvas.grid(row = 0, column = 0) 
root.title('Test') 
root.update_idletasks() 
root.update() 

bench1Xadd = 0 
bench1Yadd = 0 
vCard1 = tkinter.PhotoImage(file = 'card1.gif') 

b1Card1 = canvas.create_image(50, 500, anchor = 'nw', image = vCard1) 
root.update() 
time.sleep(0.03) 
canvas.delete("all") 
root.update() 

input('') 

def imageAdd(vCard, slot, x, y): 
    slot = canvas.create_image(x, y, anchor = 'nw', image = vCard) 
    return slot 

imageAdd(vCard1, b1Card1, 50 + bench1Xadd, 500 - bench1Yadd) 
root.update() 


input('') 
canvas.delete(b1Card1) 
root.update() 

为什么不是canvas.delete()工作?

如果我忘记了任何具体的东西,我很抱歉。

回答

1

b1Card1代表您创建的第一张图片,您几乎可以立即删除该图片。之后,当您尝试再次删除它时,它不存在,因此不会删除任何内容。

通过b1Card1imageAdd确实不是导致它被更新为新值。相反,您需要保存imageAdd的结果:

b1Card1 = imageAdd(...)