|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
如何才能通过Button组件command调用的函数在canvas插入图片
- from tkinter import *
- def mq():
- photo = PhotoImage(file="./wc.png")
- w.create_image(20, 20, anchor=CENTER, image=photo)
- root = Tk()
- root.geometry("500x400") # 设置主窗口的位置和大小+
- w = Canvas(root, height=300, width=400)
- Button(root, text="233", command=mq).pack() # 但是通过button组件调用函数来插入就不行了
- w.pack()
- # 直接插入是可以的
- # photo = PhotoImage(file="./wc.png")
- # w.create_image(200, 150, anchor=CENTER, image=photo)
- mainloop()
复制代码
因为图片文件对象定义在函数内,即局部作用域
此时你按下按钮后函数执行完毕,打开的图片对象会被 Python 垃圾回收,导致图片消失
参考代码:
- from tkinter import *
- def mq():
- global photo
- photo = PhotoImage(file="./wc.png")
- w.create_image(20, 20, anchor=CENTER, image=photo)
- photo = None
- root = Tk()
- root.geometry("500x400") # 设置主窗口的位置和大小+
- w = Canvas(root, height=300, width=400)
- Button(root, text="233", command=mq).pack() # 但是通过button组件调用函数来插入就不行了
- w.pack()
- # 直接插入是可以的
- # photo = PhotoImage(file="./wc.png")
- # w.create_image(200, 150, anchor=CENTER, image=photo)
- mainloop()
复制代码
|
|