Request Help With Displaying XBM Image

Wildman best_lay at yahoo.com
Fri Feb 26 16:17:26 EST 2016


As part of a program I am working on I want to display a
48x48 XBM image on the main window.  I have done a lot
of searching for code snippets and I found what appears
to be the correct way to do it using a Label.  So far I
have not been able to get it to work.  I have tried
different variations of the syntax but nothing will
display the image.  The Label will expand to size of
the image but nothing is there.  I have the background
of the Label set to white so it can be seen.

For experimentation I create a small program for the
sole purpose of displaying an XBM image.  The complete
script is pasted below.  I am thinking the problem 
might have something with the way the image object
is being created.  I'm probable making a dumb newbie
mistake.  BTW, if I run the script from a terminal
window, I do not get any errors.  Any guidance is
appreciated.


#!/usr/bin/python

from Tkinter import *
import tkFileDialog, os, Image, ImageTk

class cv():

    default_dir = os.environ['HOME']

class Window(Frame):

    def __init__(self, master = None):
        Frame.__init__(self,master)
        self.master = master
        self.init_window()

    def init_window(self):
        self.master.title("XBM Image Test")
        self.pack(fill=BOTH, expand=1)

        self.openButton = Button(self,
                                 text="Open Image",
                                 width = 10,
                                 command=self.open_image)
        self.openButton.place(x=50, y=100)

        self.quitButton = Button(self,
                                 text="Quit",
                                 width=10,
                                 command=self.quit)
        self.quitButton.place(x=50, y=140)

        self.xbmImage = Label(self,
                              bg="white")
        self.xbmImage.place(x=80, y=25)

    def open_image(self):
        file_filter = [
            ('X BitMap', '*.xbm *.XBM'),
            ('all files', '*.*')
            ]
        fileName = tkFileDialog.askopenfilename(parent=root,
                                                initialdir=cv.default_dir,
                                                filetypes=file_filter,
                                                title="Open XBM Image")
        if fileName:
            cv.default_dir = os.path.dirname(fileName)
            openImage = Image.open(fileName)
            imageFile = ImageTk.BitmapImage(openImage)
            self.xbmImage.config(image=imageFile)
        else:
             return None

root = Tk()
root.minsize(width=200, height=180)
root.maxsize(width=200, height=180)
app = Window(root)
root.mainloop()

-- 
<Wildman> GNU/Linux user #557453
May the Source be with you.


More information about the Python-list mailing list