diff options
Diffstat (limited to 'lib/python2.7/lib-tk/tkColorChooser.py')
-rw-r--r-- | lib/python2.7/lib-tk/tkColorChooser.py | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/lib/python2.7/lib-tk/tkColorChooser.py b/lib/python2.7/lib-tk/tkColorChooser.py new file mode 100644 index 0000000..b65b47d --- /dev/null +++ b/lib/python2.7/lib-tk/tkColorChooser.py @@ -0,0 +1,72 @@ +# tk common color chooser dialogue +# +# this module provides an interface to the native color dialogue +# available in Tk 4.2 and newer. +# +# written by Fredrik Lundh, May 1997 +# +# fixed initialcolor handling in August 1998 +# + +# +# options (all have default values): +# +# - initialcolor: color to mark as selected when dialog is displayed +# (given as an RGB triplet or a Tk color string) +# +# - parent: which window to place the dialog on top of +# +# - title: dialog title +# + +from tkCommonDialog import Dialog + + +# +# color chooser class + +class Chooser(Dialog): + "Ask for a color" + + command = "tk_chooseColor" + + def _fixoptions(self): + try: + # make sure initialcolor is a tk color string + color = self.options["initialcolor"] + if isinstance(color, tuple): + # assume an RGB triplet + self.options["initialcolor"] = "#%02x%02x%02x" % color + except KeyError: + pass + + def _fixresult(self, widget, result): + # result can be somethings: an empty tuple, an empty string or + # a Tcl_Obj, so this somewhat weird check handles that + if not result or not str(result): + return None, None # canceled + + # to simplify application code, the color chooser returns + # an RGB tuple together with the Tk color string + r, g, b = widget.winfo_rgb(result) + return (r/256, g/256, b/256), str(result) + + +# +# convenience stuff + +def askcolor(color = None, **options): + "Ask for a color" + + if color: + options = options.copy() + options["initialcolor"] = color + + return Chooser(**options).show() + + +# -------------------------------------------------------------------- +# test stuff + +if __name__ == "__main__": + print "color", askcolor() |