diff options
author | Georg Brandl <georg@python.org> | 2008-05-17 18:28:57 +0000 |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2008-05-17 18:28:57 +0000 |
commit | 330231238327558337b9d8dbabe3a3b02641501d (patch) | |
tree | ec8f070c5b823e470045eaad31eae2105dff48a1 /Lib/tkinter/commondialog.py | |
parent | 094c4ffe5915bf2700be833bcf42c2e64b1dab69 (diff) | |
download | cpython-330231238327558337b9d8dbabe3a3b02641501d.tar.gz cpython-330231238327558337b9d8dbabe3a3b02641501d.zip |
Tkinter move, part 1: move modules.
Diffstat (limited to 'Lib/tkinter/commondialog.py')
-rw-r--r-- | Lib/tkinter/commondialog.py | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/Lib/tkinter/commondialog.py b/Lib/tkinter/commondialog.py new file mode 100644 index 00000000000..a5815c660b7 --- /dev/null +++ b/Lib/tkinter/commondialog.py @@ -0,0 +1,60 @@ +# 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 * + +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 + if not master and options.get('parent'): + self.master = options['parent'] + + 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 dummy widget to properly process the options + # (at least as long as we use Tkinter 1.63) + w = Frame(self.master) + + try: + + s = 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 |