here's a hairy, built in way to get many of the same answers. Note that although python considers "" to be false and all other strings to be true, TCL has a very different idea about things.

>>> import Tkinter >>> tk = Tkinter.Tk() >>> var = Tkinter.BooleanVar(tk) >>> var.set("false") >>> var.get() False >>> var.set("1") >>> var.get() True >>> var.set("[exec 'rm -r /']") >>> var.get() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.5/lib-tk/Tkinter.py", line 324, in get return self._tk.getboolean(self._tk.globalgetvar(self._name)) _tkinter.TclError: 0expected boolean value but got "[exec 'rm -r /']" >>>

A good thing about this is that it is fairly forgiving about the values you can use. It's lazy about turning strings into values, and it's hygenic about what it accepts and rejects(notice that if the above statement were given at a tcl prompt, it would erase the users hard disk).

the bad thing is that it requires that Tkinter be available, which is usually, but not universally true, and more significantly, requires that a Tk instance be created, which is comparatively heavy.