|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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()
|
|