Home | History | Annotate | Download | only in tkinter
      1 # base class for tk common dialogues
      2 #
      3 # this module provides a base class for accessing the common
      4 # dialogues available in Tk 4.2 and newer.  use filedialog,
      5 # colorchooser, and messagebox to access the individual
      6 # dialogs.
      7 #
      8 # written by Fredrik Lundh, May 1997
      9 #
     10 
     11 from tkinter import *
     12 
     13 class Dialog:
     14 
     15     command  = None
     16 
     17     def __init__(self, master=None, **options):
     18         self.master  = master
     19         self.options = options
     20         if not master and options.get('parent'):
     21             self.master = options['parent']
     22 
     23     def _fixoptions(self):
     24         pass # hook
     25 
     26     def _fixresult(self, widget, result):
     27         return result # hook
     28 
     29     def show(self, **options):
     30 
     31         # update instance options
     32         for k, v in options.items():
     33             self.options[k] = v
     34 
     35         self._fixoptions()
     36 
     37         # we need a dummy widget to properly process the options
     38         # (at least as long as we use Tkinter 1.63)
     39         w = Frame(self.master)
     40 
     41         try:
     42 
     43             s = w.tk.call(self.command, *w._options(self.options))
     44 
     45             s = self._fixresult(w, s)
     46 
     47         finally:
     48 
     49             try:
     50                 # get rid of the widget
     51                 w.destroy()
     52             except:
     53                 pass
     54 
     55         return s
     56