Tkinter Canvas,图像删除

Tkinter Canvas, Deletion of Images

我对此感到非常沮丧,因为它为什么不起作用是完全愚蠢的。

我有:

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() 不工作?

如果我忘记了任何具体内容,我很抱歉。

b1Card1 表示您创建的第一张图像,您几乎立即将其删除。稍后,当您再次尝试删除它时,它不存在,因此不会删除任何内容。

b1Card1 传递给 imageAdd 而不是 会导致它更新为新值。相反,您需要保存 imageAdd:

的结果
b1Card1 = imageAdd(...)