viewing generated images

Tim Flynn tgflynn at stny.rr.com
Wed Jun 1 22:58:31 EDT 2005


Hi,

   I'm trying to write a simple image viewer using Tkinter and ImageTk from
the PIL toolkit.  The images are stored in memory and I don't want to
create temporary files for them.

    My code looks like this :


from Tkinter import *
import Image
import ImageTk

class Viewer(Frame):              
    def __init__( self, master=None ):
        Frame.__init__( self, master )
        self.grid()                    
        self.createWidgets()

    def createWidgets(self):
        self.image_size = (50,50)
        self.pilim = Image.new( "1", self.image_size )

        # Generate a blank image
        f = lambda(x): 0
        Image.eval( self.pilim, f )

        self.bmi = ImageTk.BitmapImage( image = self.pilim,
                                        foreground = 'black' )
        self.canvas = Canvas( width=100,
                              height = 100,
                              bg = 'white' )
        self.quitButton = Button( self,
                                  text="Quit",
                                  command=self.quit )     
        self.quitButton.grid()
        self.canvas.grid()
        im_id = self.canvas.create_bitmap( 0,
                                           0,
                                           anchor = 'nw',
                                           bitmap = self.bmi )


viewer = Viewer()                    
viewer.master.title("Test viewer") 
viewer.mainloop()                         

  The create_bitmap call fails with the following error :

_tkinter.TclError: bitmap "pyimage2" not defined

  I've seen a couple of mentions of this problem but with no solution given
other than to write the image to a temporary file, which I don't want to
do.

  I'd appreciate it if anyone could point me to a different approach for
this that works (and doesn't involve creating temporary files).  I'd be
open to trying a different GUI/imaging package if anyone has suggestions
for one that would be better suited to this sort of application.

  Otherwise I'm also interested if anyone has any ideas about the root cause
of this problem because if I don't find some work around I intend to try to
fix it in Tkinter.

Thanks,
Tim 



More information about the Python-list mailing list