12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #
- # Instant Python
- # $Id: tkCommonDialog.py 32140 2003-04-06 09:01:11Z rhettinger $
- #
- # 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
|