| 
									
										
										
										
											2009-10-11 21:25:26 +00:00
										 |  |  | :tocdepth: 2
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ==========================
 | 
					
						
							|  |  |  | Graphic User Interface FAQ
 | 
					
						
							|  |  |  | ==========================
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-28 13:28:44 +01:00
										 |  |  | .. only:: html
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    .. contents::
 | 
					
						
							| 
									
										
										
										
											2009-10-11 21:25:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-19 17:59:59 +00:00
										 |  |  | .. XXX need review for Python 3.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-11 21:25:26 +00:00
										 |  |  | General GUI Questions
 | 
					
						
							|  |  |  | =====================
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-17 03:09:09 -07:00
										 |  |  | What GUI toolkits exist for Python?
 | 
					
						
							|  |  |  | ===================================
 | 
					
						
							| 
									
										
										
										
											2009-10-11 21:25:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Standard builds of Python include an object-oriented interface to the Tcl/Tk
 | 
					
						
							| 
									
										
										
										
											2011-02-05 10:43:57 +00:00
										 |  |  | widget set, called :ref:`tkinter <Tkinter>`.  This is probably the easiest to
 | 
					
						
							|  |  |  | install (since it comes included with most
 | 
					
						
							| 
									
										
										
										
											2016-02-26 19:37:12 +01:00
										 |  |  | `binary distributions <https://www.python.org/downloads/>`_ of Python) and use.
 | 
					
						
							| 
									
										
										
										
											2011-02-05 10:43:57 +00:00
										 |  |  | For more info about Tk, including pointers to the source, see the
 | 
					
						
							| 
									
										
										
										
											2016-05-07 10:49:07 +03:00
										 |  |  | `Tcl/Tk home page <https://www.tcl.tk>`_.  Tcl/Tk is fully portable to the
 | 
					
						
							| 
									
										
										
										
											2014-04-12 09:32:04 -07:00
										 |  |  | Mac OS X, Windows, and Unix platforms.
 | 
					
						
							| 
									
										
										
										
											2009-10-11 21:25:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-17 03:09:09 -07:00
										 |  |  | Depending on what platform(s) you are aiming at, there are also several
 | 
					
						
							|  |  |  | alternatives. A `list of cross-platform
 | 
					
						
							|  |  |  | <https://wiki.python.org/moin/GuiProgramming#Cross-Platform_Frameworks>`_ and
 | 
					
						
							|  |  |  | `platform-specific
 | 
					
						
							|  |  |  | <https://wiki.python.org/moin/GuiProgramming#Platform-specific_Frameworks>`_ GUI
 | 
					
						
							|  |  |  | frameworks can be found on the python wiki.
 | 
					
						
							| 
									
										
										
										
											2009-10-11 21:25:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Tkinter questions
 | 
					
						
							|  |  |  | =================
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | How do I freeze Tkinter applications?
 | 
					
						
							|  |  |  | -------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Freeze is a tool to create stand-alone applications.  When freezing Tkinter
 | 
					
						
							|  |  |  | applications, the applications will not be truly stand-alone, as the application
 | 
					
						
							|  |  |  | will still need the Tcl and Tk libraries.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 75264,75268,75293,75318,75391-75392,75436,75478,75971,76003,76058,76140-76141,76231,76380,76428-76429 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r75264 | andrew.kuchling | 2009-10-05 17:30:22 -0500 (Mon, 05 Oct 2009) | 1 line
  Add various items
........
  r75268 | andrew.kuchling | 2009-10-05 17:45:39 -0500 (Mon, 05 Oct 2009) | 1 line
  Remove two notes
........
  r75293 | kristjan.jonsson | 2009-10-09 09:32:19 -0500 (Fri, 09 Oct 2009) | 2 lines
  http://bugs.python.org/issue7029
  a non-default timer wasn't actually used by the individual Tests.
........
  r75318 | benjamin.peterson | 2009-10-10 16:15:58 -0500 (Sat, 10 Oct 2009) | 1 line
  remove script which uses long gone module
........
  r75391 | andrew.kuchling | 2009-10-13 10:49:33 -0500 (Tue, 13 Oct 2009) | 1 line
  Link to PEP
........
  r75392 | andrew.kuchling | 2009-10-13 11:11:49 -0500 (Tue, 13 Oct 2009) | 1 line
  Various link, textual, and markup fixes
........
  r75436 | benjamin.peterson | 2009-10-15 10:39:15 -0500 (Thu, 15 Oct 2009) | 1 line
  don't need to mess up sys.path
........
  r75478 | senthil.kumaran | 2009-10-17 20:58:45 -0500 (Sat, 17 Oct 2009) | 3 lines
  Fix a typo.
........
  r75971 | benjamin.peterson | 2009-10-30 22:56:15 -0500 (Fri, 30 Oct 2009) | 1 line
  add some checks for evaluation order with parenthesis #7210
........
  r76003 | antoine.pitrou | 2009-10-31 19:30:13 -0500 (Sat, 31 Oct 2009) | 6 lines
  Hopefully fix the buildbot problems on test_mailbox, by computing
  the maildir toc cache refresh date before actually refreshing the cache.
  (see #6896)
........
  r76058 | benjamin.peterson | 2009-11-02 10:14:19 -0600 (Mon, 02 Nov 2009) | 1 line
  grant list.index() a more informative error message #7252
........
  r76140 | nick.coghlan | 2009-11-07 02:13:55 -0600 (Sat, 07 Nov 2009) | 1 line
  Add test for runpy.run_module package execution and use something other than logging as the example of a non-executable package
........
  r76141 | nick.coghlan | 2009-11-07 02:15:01 -0600 (Sat, 07 Nov 2009) | 1 line
  Some minor cleanups to private runpy code and docstrings
........
  r76231 | benjamin.peterson | 2009-11-12 17:42:23 -0600 (Thu, 12 Nov 2009) | 1 line
  this main is much more useful
........
  r76380 | antoine.pitrou | 2009-11-18 14:20:46 -0600 (Wed, 18 Nov 2009) | 3 lines
  Mention Giampolo R's new FTP TLS support in the what's new file
........
  r76428 | benjamin.peterson | 2009-11-19 20:15:50 -0600 (Thu, 19 Nov 2009) | 1 line
  turn goto into do while loop
........
  r76429 | benjamin.peterson | 2009-11-19 20:56:43 -0600 (Thu, 19 Nov 2009) | 2 lines
  avoid doing an uneeded import in a function
........
											
										 
											2009-11-25 17:46:26 +00:00
										 |  |  | One solution is to ship the application with the Tcl and Tk libraries, and point
 | 
					
						
							| 
									
										
										
										
											2009-10-11 21:25:26 +00:00
										 |  |  | to them at run-time using the :envvar:`TCL_LIBRARY` and :envvar:`TK_LIBRARY`
 | 
					
						
							|  |  |  | environment variables.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | To get truly stand-alone applications, the Tcl scripts that form the library
 | 
					
						
							|  |  |  | have to be integrated into the application as well. One tool supporting that is
 | 
					
						
							|  |  |  | SAM (stand-alone modules), which is part of the Tix distribution
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 75264,75268,75293,75318,75391-75392,75436,75478,75971,76003,76058,76140-76141,76231,76380,76428-76429 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r75264 | andrew.kuchling | 2009-10-05 17:30:22 -0500 (Mon, 05 Oct 2009) | 1 line
  Add various items
........
  r75268 | andrew.kuchling | 2009-10-05 17:45:39 -0500 (Mon, 05 Oct 2009) | 1 line
  Remove two notes
........
  r75293 | kristjan.jonsson | 2009-10-09 09:32:19 -0500 (Fri, 09 Oct 2009) | 2 lines
  http://bugs.python.org/issue7029
  a non-default timer wasn't actually used by the individual Tests.
........
  r75318 | benjamin.peterson | 2009-10-10 16:15:58 -0500 (Sat, 10 Oct 2009) | 1 line
  remove script which uses long gone module
........
  r75391 | andrew.kuchling | 2009-10-13 10:49:33 -0500 (Tue, 13 Oct 2009) | 1 line
  Link to PEP
........
  r75392 | andrew.kuchling | 2009-10-13 11:11:49 -0500 (Tue, 13 Oct 2009) | 1 line
  Various link, textual, and markup fixes
........
  r75436 | benjamin.peterson | 2009-10-15 10:39:15 -0500 (Thu, 15 Oct 2009) | 1 line
  don't need to mess up sys.path
........
  r75478 | senthil.kumaran | 2009-10-17 20:58:45 -0500 (Sat, 17 Oct 2009) | 3 lines
  Fix a typo.
........
  r75971 | benjamin.peterson | 2009-10-30 22:56:15 -0500 (Fri, 30 Oct 2009) | 1 line
  add some checks for evaluation order with parenthesis #7210
........
  r76003 | antoine.pitrou | 2009-10-31 19:30:13 -0500 (Sat, 31 Oct 2009) | 6 lines
  Hopefully fix the buildbot problems on test_mailbox, by computing
  the maildir toc cache refresh date before actually refreshing the cache.
  (see #6896)
........
  r76058 | benjamin.peterson | 2009-11-02 10:14:19 -0600 (Mon, 02 Nov 2009) | 1 line
  grant list.index() a more informative error message #7252
........
  r76140 | nick.coghlan | 2009-11-07 02:13:55 -0600 (Sat, 07 Nov 2009) | 1 line
  Add test for runpy.run_module package execution and use something other than logging as the example of a non-executable package
........
  r76141 | nick.coghlan | 2009-11-07 02:15:01 -0600 (Sat, 07 Nov 2009) | 1 line
  Some minor cleanups to private runpy code and docstrings
........
  r76231 | benjamin.peterson | 2009-11-12 17:42:23 -0600 (Thu, 12 Nov 2009) | 1 line
  this main is much more useful
........
  r76380 | antoine.pitrou | 2009-11-18 14:20:46 -0600 (Wed, 18 Nov 2009) | 3 lines
  Mention Giampolo R's new FTP TLS support in the what's new file
........
  r76428 | benjamin.peterson | 2009-11-19 20:15:50 -0600 (Thu, 19 Nov 2009) | 1 line
  turn goto into do while loop
........
  r76429 | benjamin.peterson | 2009-11-19 20:56:43 -0600 (Thu, 19 Nov 2009) | 2 lines
  avoid doing an uneeded import in a function
........
											
										 
											2009-11-25 17:46:26 +00:00
										 |  |  | (http://tix.sourceforge.net/).
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Build Tix with SAM enabled, perform the appropriate call to
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  | :c:func:`Tclsam_init`, etc. inside Python's
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 75264,75268,75293,75318,75391-75392,75436,75478,75971,76003,76058,76140-76141,76231,76380,76428-76429 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r75264 | andrew.kuchling | 2009-10-05 17:30:22 -0500 (Mon, 05 Oct 2009) | 1 line
  Add various items
........
  r75268 | andrew.kuchling | 2009-10-05 17:45:39 -0500 (Mon, 05 Oct 2009) | 1 line
  Remove two notes
........
  r75293 | kristjan.jonsson | 2009-10-09 09:32:19 -0500 (Fri, 09 Oct 2009) | 2 lines
  http://bugs.python.org/issue7029
  a non-default timer wasn't actually used by the individual Tests.
........
  r75318 | benjamin.peterson | 2009-10-10 16:15:58 -0500 (Sat, 10 Oct 2009) | 1 line
  remove script which uses long gone module
........
  r75391 | andrew.kuchling | 2009-10-13 10:49:33 -0500 (Tue, 13 Oct 2009) | 1 line
  Link to PEP
........
  r75392 | andrew.kuchling | 2009-10-13 11:11:49 -0500 (Tue, 13 Oct 2009) | 1 line
  Various link, textual, and markup fixes
........
  r75436 | benjamin.peterson | 2009-10-15 10:39:15 -0500 (Thu, 15 Oct 2009) | 1 line
  don't need to mess up sys.path
........
  r75478 | senthil.kumaran | 2009-10-17 20:58:45 -0500 (Sat, 17 Oct 2009) | 3 lines
  Fix a typo.
........
  r75971 | benjamin.peterson | 2009-10-30 22:56:15 -0500 (Fri, 30 Oct 2009) | 1 line
  add some checks for evaluation order with parenthesis #7210
........
  r76003 | antoine.pitrou | 2009-10-31 19:30:13 -0500 (Sat, 31 Oct 2009) | 6 lines
  Hopefully fix the buildbot problems on test_mailbox, by computing
  the maildir toc cache refresh date before actually refreshing the cache.
  (see #6896)
........
  r76058 | benjamin.peterson | 2009-11-02 10:14:19 -0600 (Mon, 02 Nov 2009) | 1 line
  grant list.index() a more informative error message #7252
........
  r76140 | nick.coghlan | 2009-11-07 02:13:55 -0600 (Sat, 07 Nov 2009) | 1 line
  Add test for runpy.run_module package execution and use something other than logging as the example of a non-executable package
........
  r76141 | nick.coghlan | 2009-11-07 02:15:01 -0600 (Sat, 07 Nov 2009) | 1 line
  Some minor cleanups to private runpy code and docstrings
........
  r76231 | benjamin.peterson | 2009-11-12 17:42:23 -0600 (Thu, 12 Nov 2009) | 1 line
  this main is much more useful
........
  r76380 | antoine.pitrou | 2009-11-18 14:20:46 -0600 (Wed, 18 Nov 2009) | 3 lines
  Mention Giampolo R's new FTP TLS support in the what's new file
........
  r76428 | benjamin.peterson | 2009-11-19 20:15:50 -0600 (Thu, 19 Nov 2009) | 1 line
  turn goto into do while loop
........
  r76429 | benjamin.peterson | 2009-11-19 20:56:43 -0600 (Thu, 19 Nov 2009) | 2 lines
  avoid doing an uneeded import in a function
........
											
										 
											2009-11-25 17:46:26 +00:00
										 |  |  | :file:`Modules/tkappinit.c`, and link with libtclsam and libtksam (you
 | 
					
						
							|  |  |  | might include the Tix libraries as well).
 | 
					
						
							| 
									
										
										
										
											2009-10-11 21:25:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Can I have Tk events handled while waiting for I/O?
 | 
					
						
							|  |  |  | ---------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-17 14:49:26 -04:00
										 |  |  | On platforms other than Windows, yes, and you don't even
 | 
					
						
							|  |  |  | need threads!  But you'll have to restructure your I/O
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  | code a bit.  Tk has the equivalent of Xt's :c:func:`XtAddInput()` call, which allows you
 | 
					
						
							| 
									
										
										
										
											2009-10-11 21:25:26 +00:00
										 |  |  | to register a callback function which will be called from the Tk mainloop when
 | 
					
						
							| 
									
										
										
										
											2015-05-17 14:49:26 -04:00
										 |  |  | I/O is possible on a file descriptor.  See :ref:`tkinter-file-handlers`.
 | 
					
						
							| 
									
										
										
										
											2009-10-11 21:25:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | I can't get key bindings to work in Tkinter: why?
 | 
					
						
							|  |  |  | -------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | An often-heard complaint is that event handlers bound to events with the
 | 
					
						
							|  |  |  | :meth:`bind` method don't get handled even when the appropriate key is pressed.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The most common cause is that the widget to which the binding applies doesn't
 | 
					
						
							|  |  |  | have "keyboard focus".  Check out the Tk documentation for the focus command.
 | 
					
						
							|  |  |  | Usually a widget is given the keyboard focus by clicking in it (but not for
 | 
					
						
							|  |  |  | labels; see the takefocus option).
 |