M
midtoad
I'm trying to display a GIF image in a label as the central area to a
Tkinter GUI. The image does not appear, though a space is made for it.
Why is this so?
I notice that I can display a GIF image in the central area of a simple
menu-bar app as shown below in the first code sample. But, when I set up my
app with a class, as shown below in the second code sample, the image
disappears.
How can I correct this? I'm sure the answer would jump out at me if I
thought more clearly about it...
thanks
S
---
#basicmenu.py : displays GIF image
from Tkinter import *
def callback(text):
print "called the callback!: "+text
root = Tk()
# create a menu
menu = Menu(root)
root.config(menu=menu)
filemenu = Menu(menu)
menu.add_cascade(label="File", menu=filemenu)
filemenu.add_command(label="New", command=callback('new'))
filemenu.add_command(label="Open...", command=callback('open'))
filemenu.add_separator()
filemenu.add_command(label="Exit", command=callback('exit'))
helpmenu = Menu(menu)
menu.add_cascade(label="Help", menu=helpmenu)
helpmenu.add_command(label="About...", command=callback('about'))
img00 = PhotoImage(format='gif',data=
'R0lGODlhKwAQAJEAACWgA/3bYYNOGgAAACwAAAAAKwAQAAACfIyPqcsrD2M0'
+'oAJqa8h29yAkITiG3HWmKWiUrdtpseZdtcfmJSyjvf2Z5Q671u0wA9I+RtLj'
+'ZcwgfxglTTchjqS34JUrCUMQySOzih07Tb62eeneqSfU8vsmf65xZa8S/zI3'
+'dlLD5deRl1dlxdT4MYIA2TBJuSZ2iZkZVgAAOw==')
newLabel = Label(root,image=img00)
t = str(img00.width()) + ' wide x ' + str(img00.height()) + ' high'
newLabel.pack()
Label(root,text='The image is\n'+t).pack()
mainloop()
---
#basicmenu2gifobj.py : doesn't display image
from Tkinter import *
class gifMenu:
def __init__(self, parent):
# create a menu
menu = Menu(parent)
parent.config(menu=menu)
filemenu = Menu(menu)
menu.add_cascade(label="File", menu=filemenu)
filemenu.add_command(label="New", command=callback('new'))
filemenu.add_command(label="Open...", command=callback('open'))
filemenu.add_separator()
filemenu.add_command(label="Exit", command=callback('exit'))
helpmenu = Menu(menu)
menu.add_cascade(label="Help", menu=helpmenu)
helpmenu.add_command(label="About...", command=callback('about'))
img00 = PhotoImage(format='gif',data=
'R0lGODlhKwAQAJEAACWgA/3bYYNOGgAAACwAAAAAKwAQAAACfIyPqcsrD2M0'
+'oAJqa8h29yAkITiG3HWmKWiUrdtpseZdtcfmJSyjvf2Z5Q671u0wA9I+RtLj'
+'ZcwgfxglTTchjqS34JUrCUMQySOzih07Tb62eeneqSfU8vsmf65xZa8S/zI3'
+'dlLD5deRl1dlxdT4MYIA2TBJuSZ2iZkZVgAAOw==')
newLabel = Label(parent,image=img00)
t = str(img00.width()) + ' wide x ' + str(img00.height()) + ' high'
newLabel.pack()
Label(parent,text='The image is\n'+t).pack()
class callback:
def __init__(self, text):
self.text = text
def __call__(self):
print 'Command is: ',self.text
######################################################################
# Create GUI in root window for testing.
if __name__ == '__main__':
title='Menu test with GIF'
root = Tk()
#Pmw.initialise(root)
root.title(title)
#exitButton = Tkinter.Button(root, text = 'Exit', command =
root.destroy)
#exitButton.pack(side = 'bottom')
gifMenu = gifMenu(root)
root.mainloop()
Tkinter GUI. The image does not appear, though a space is made for it.
Why is this so?
I notice that I can display a GIF image in the central area of a simple
menu-bar app as shown below in the first code sample. But, when I set up my
app with a class, as shown below in the second code sample, the image
disappears.
How can I correct this? I'm sure the answer would jump out at me if I
thought more clearly about it...
thanks
S
---
#basicmenu.py : displays GIF image
from Tkinter import *
def callback(text):
print "called the callback!: "+text
root = Tk()
# create a menu
menu = Menu(root)
root.config(menu=menu)
filemenu = Menu(menu)
menu.add_cascade(label="File", menu=filemenu)
filemenu.add_command(label="New", command=callback('new'))
filemenu.add_command(label="Open...", command=callback('open'))
filemenu.add_separator()
filemenu.add_command(label="Exit", command=callback('exit'))
helpmenu = Menu(menu)
menu.add_cascade(label="Help", menu=helpmenu)
helpmenu.add_command(label="About...", command=callback('about'))
img00 = PhotoImage(format='gif',data=
'R0lGODlhKwAQAJEAACWgA/3bYYNOGgAAACwAAAAAKwAQAAACfIyPqcsrD2M0'
+'oAJqa8h29yAkITiG3HWmKWiUrdtpseZdtcfmJSyjvf2Z5Q671u0wA9I+RtLj'
+'ZcwgfxglTTchjqS34JUrCUMQySOzih07Tb62eeneqSfU8vsmf65xZa8S/zI3'
+'dlLD5deRl1dlxdT4MYIA2TBJuSZ2iZkZVgAAOw==')
newLabel = Label(root,image=img00)
t = str(img00.width()) + ' wide x ' + str(img00.height()) + ' high'
newLabel.pack()
Label(root,text='The image is\n'+t).pack()
mainloop()
---
#basicmenu2gifobj.py : doesn't display image
from Tkinter import *
class gifMenu:
def __init__(self, parent):
# create a menu
menu = Menu(parent)
parent.config(menu=menu)
filemenu = Menu(menu)
menu.add_cascade(label="File", menu=filemenu)
filemenu.add_command(label="New", command=callback('new'))
filemenu.add_command(label="Open...", command=callback('open'))
filemenu.add_separator()
filemenu.add_command(label="Exit", command=callback('exit'))
helpmenu = Menu(menu)
menu.add_cascade(label="Help", menu=helpmenu)
helpmenu.add_command(label="About...", command=callback('about'))
img00 = PhotoImage(format='gif',data=
'R0lGODlhKwAQAJEAACWgA/3bYYNOGgAAACwAAAAAKwAQAAACfIyPqcsrD2M0'
+'oAJqa8h29yAkITiG3HWmKWiUrdtpseZdtcfmJSyjvf2Z5Q671u0wA9I+RtLj'
+'ZcwgfxglTTchjqS34JUrCUMQySOzih07Tb62eeneqSfU8vsmf65xZa8S/zI3'
+'dlLD5deRl1dlxdT4MYIA2TBJuSZ2iZkZVgAAOw==')
newLabel = Label(parent,image=img00)
t = str(img00.width()) + ' wide x ' + str(img00.height()) + ' high'
newLabel.pack()
Label(parent,text='The image is\n'+t).pack()
class callback:
def __init__(self, text):
self.text = text
def __call__(self):
print 'Command is: ',self.text
######################################################################
# Create GUI in root window for testing.
if __name__ == '__main__':
title='Menu test with GIF'
root = Tk()
#Pmw.initialise(root)
root.title(title)
#exitButton = Tkinter.Button(root, text = 'Exit', command =
root.destroy)
#exitButton.pack(side = 'bottom')
gifMenu = gifMenu(root)
root.mainloop()