diff options
author | Guido van Rossum <guido@python.org> | 1997-07-19 20:02:36 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1997-07-19 20:02:36 (GMT) |
commit | 1e8c8a20f2b5ff51415ed8dfbf4df574595a95fb (patch) | |
tree | c6f6d34dad616a9efe0aaeaa7e5727b33b604762 /Lib/lib-tk/tkCommonDialog.py | |
parent | 65c78e18b593955c231006dcb5862b53d3a2f169 (diff) | |
download | cpython-1e8c8a20f2b5ff51415ed8dfbf4df574595a95fb.zip cpython-1e8c8a20f2b5ff51415ed8dfbf4df574595a95fb.tar.gz cpython-1e8c8a20f2b5ff51415ed8dfbf4df574595a95fb.tar.bz2 |
New dialog routines (Fred Lundh)
Diffstat (limited to 'Lib/lib-tk/tkCommonDialog.py')
-rw-r--r-- | Lib/lib-tk/tkCommonDialog.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/Lib/lib-tk/tkCommonDialog.py b/Lib/lib-tk/tkCommonDialog.py new file mode 100644 index 0000000..33126c5 --- /dev/null +++ b/Lib/lib-tk/tkCommonDialog.py @@ -0,0 +1,63 @@ +# +# Instant Python +# $Id$ +# +# base class for tk common dialogues +# +# this module provides a base class for accessing the common +# dialogues available in Tk 4.2 and newer. use tkFileDialog, +# tkColorChooser, and tkMessageBox to access the individual +# dialogs. +# +# written by Fredrik Lundh, May 1997 +# + +from Tkinter import * +import os + +class Dialog: + + command = None + + def __init__(self, master=None, **options): + + # FIXME: should this be placed on the module level instead? + if TkVersion < 4.2: + raise TclError, "this module requires Tk 4.2 or newer" + + self.master = master + self.options = options + + def _fixoptions(self): + pass # hook + + def _fixresult(self, widget, result): + return result # hook + + def show(self, **options): + + # update instance options + for k, v in options.items(): + self.options[k] = v + + self._fixoptions() + + # we need a stub widget to properly process the options + # (at least as long as we use Tkinter 1.63) + w = Frame(self.master) + + try: + + s = apply(w.tk.call, (self.command,) + w._options(self.options)) + + s = self._fixresult(w, s) + + finally: + + try: + # get rid of the widget + w.destroy() + except: + pass + + return s |