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