Associate image name with list item

John McMonagle jmcmonagle at velseis.com.au
Mon Mar 26 22:58:49 EDT 2007


Kevin Walzer wrote:
> I'm trying to avoid a *lot* of typing in my Tkinter application by 
> associating image names with items in a list. Here is my sample list:
> 
> self.catlist = [
>              'all', 'installed', 'base', 'crypto', 'database', 'devel',
>          'editors', 'games', 'gnome', 'graphics', 'kde', 'languages', 
> 'libs', 'libs_perlmods',
>          'libs_pythonmods', 'libs_rubymods', 'net', 'sci', 'shells', 
> 'sound', 'text', 'web',
>          'x11_system', 'x11-wm', 'x11'
>              ]
> 
> I've also already created a bunch of images with names that correspond 
> to the list above, i.e. self.all, self.installed, and so on.  Here's the 
> rest of my code:
> 
> for item in self.catlist:
>              print item
>              self.categorytable.insert(END, item)
> 	    self.categorytable.cellconfigure("end,0", image=self.item)
> 
> This yields the following error:
> 
> AttributeError: item
> 
> because, of course, I don't actually have an image called self.item.
> 
> What I'm trying to do is get the value of the variable "item" and plug 
> it into the image name, so that self.item actually corresponds to 
> self.installed, self.base, etc. Trying something like
> 
> self.categorytable.cellconfigure("end,0", image=self.%s % item)
> 
> just yields a syntax error: SyntaxError: invalid syntax
> 
> Can anyone point me in the right direction?



Create a dictionary mapping the name to the image object.  For example:

# Create all your images first

# Map a name to the image object
self.catdict = {'all' : self.all, 'installed' : self.installed, .......}

# Loop over the image names and do your stuff
for item in self.catdict.keys():
   print item
   self.categorytable.insert(END, item)
   self.categorytable.cellconfigure("end,0",image=self.catDict.get(item))

Regards,

John



More information about the Python-list mailing list