mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	 675c97eb6c
			
		
	
	
		675c97eb6c
		
			
		
	
	
	
	
		
			
			When simple query dialogs (tkinter.simpledialog), message boxes (tkinter.messagebox) or color choose dialog (tkinter.colorchooser) are created without arguments master and parent, and the default root window is not yet created, a new temporary hidden root window will be created automatically. It will not be set as the default root window and will be destroyed right after closing the dialog window. It will help to use these simple dialog windows in programs which do not need other GUI. Previously, message boxes and color chooser created the blank root window and left it after closing the dialog window, and query dialogs just raised an exception. Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
		
			
				
	
	
		
			53 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # 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 filedialog,
 | |
| # colorchooser, and messagebox to access the individual
 | |
| # dialogs.
 | |
| #
 | |
| # written by Fredrik Lundh, May 1997
 | |
| #
 | |
| 
 | |
| __all__ = ["Dialog"]
 | |
| 
 | |
| from tkinter import Frame, _get_temp_root, _destroy_temp_root
 | |
| 
 | |
| 
 | |
| class Dialog:
 | |
| 
 | |
|     command = None
 | |
| 
 | |
|     def __init__(self, master=None, **options):
 | |
|         if master is None:
 | |
|             master = options.get('parent')
 | |
|         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()
 | |
| 
 | |
|         master = self.master
 | |
|         if master is None:
 | |
|             master = _get_temp_root()
 | |
|         try:
 | |
|             self._test_callback(master)  # The function below is replaced for some tests.
 | |
|             s = master.tk.call(self.command, *master._options(self.options))
 | |
|             s = self._fixresult(master, s)
 | |
|         finally:
 | |
|             _destroy_temp_root(master)
 | |
| 
 | |
|         return s
 | |
| 
 | |
|     def _test_callback(self, master):
 | |
|         pass
 |