首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

关于canvas有关问题,希望大家帮忙看下

2012-05-28 
关于canvas问题,希望大家帮忙看下我想在每个LABEL里面根据数的不同显示不同的图片,但是我把CANVAS放在函数

关于canvas问题,希望大家帮忙看下
我想在每个LABEL里面根据数的不同显示不同的图片,但是我把CANVAS放在函数里面怎么就显示不出来图片了?望高手帮我看看,谢谢了~

Perl code
# -*- coding:utf-8 -*-from Tkinter import *         # 导入Tkinter模块from PIL import Image,ImageTkapp = Tk()app.geometry('580x320+300+300')def a():          Label(app,width=3,height=8).grid(row=0,column=0)    lb1=Label(app,text='1',width=15,height=8,bg='yellow').grid(row = 0,column=1)    cv1=Canvas(lb1,bg='white',width=90,height=100)    img1=PhotoImage(file='13.gif')    cv1.create_image((45,50),image=img1)    cv1.grid(row=0,column=1)    lb2=Label(app,width=3,height=8).grid(row=0,column=2)    lb3=Label(app,text='2',width=15,height=8,bg='yellow').grid(row=0,column=3)    cv2=Canvas(lb3,width=90,height=100)    img2=PhotoImage(file='1.gif')    cv2.create_image((45,50),image=img2)    cv2.grid(row=0,column=3)a()app.mainloop()


[解决办法]
img1,img2当函数返回后就不存在了,他们相应的图像object也就被释放了。你需要自己保存图像的handle。
比如,你可以返回两个图像的值,并把他们放在一个变量中。

Python code
# -*- coding:utf-8 -*-from Tkinter import *         # 导入Tkinter模块from PIL import Image,ImageTkapp = Tk()app.geometry('580x320+300+300')def a():          Label(app,width=3,height=8).grid(row=0,column=0)    lb1=Label(app,text='1',width=15,height=8,bg='yellow').grid(row = 0,column=1)    cv1=Canvas(lb1,bg='white',width=90,height=100)    img1=PhotoImage(file='13.gif')    cv1.create_image((45,50),image=img1)    cv1.grid(row=0,column=1)    lb2=Label(app,width=3,height=8).grid(row=0,column=2)    lb3=Label(app,text='2',width=15,height=8,bg='yellow').grid(row=0,column=3)    cv2=Canvas(lb3,width=90,height=100)    img2=PhotoImage(file='1.gif')    cv2.create_image((45,50),image=img2)    cv2.grid(row=0,column=3)    return img1, img2images = a()app.mainloop()
[解决办法]
貌似你要自己保持图片对象的引用,简单把img1,img2移到函数外...

...
img1=PhotoImage(file='13.gif')
img2=PhotoImage(file='1.gif')

def a():
...

热点排行