Tkinter库 canvas模块使用,为何使用如下代码无法做到切换背景图片

img


我的图片切换代码如上,但我无论如何调试,都无法实现切换,我想实现的是将原背景删除,然后换成随机的新背景,但是最终效果如下:

img

img

img

最后就直接是白屏了

img


上图是我最初的实现。

我也尝试过如下代码,但也失败了。


```python
   
    photos=["1.jpg",'2.jpg','3.jpg']
    imgpath = choice(photos)
    img = Image.open(imgpath)
    photo = ImageTk.PhotoImage(img)
    canvas.delete(ALL) 
    canvas.create_image(a-260, b-120, image=photo)
    canvas.pack()

```

ImageTk.PhotoImage(img) 返回的图片对象需要用全局变量保存
不能只保存在函数内的局部变量中,因为在函数执行结束后这个图片对象会随局部变量一起被销毁。
在 bk_change()函数中用 global photo 声明 photo为全局变量即可。

def bk_change():
    global photo
    。。。。。。。。。。
    photo = ImageTk.PhotoImage(img)
    。。。。。。。。。