Using the tkinter
Python Module¶
The tkinter Python standard library module/package provides a Python interface to tcl/tk/tkinter. This interface allows you to create GUI applications.
PyOxidizer has partial support for using tkinter
. Since tkinter
isn’t a commonly used Python feature, you must opt in to enabling it.
Installing tcl Files¶
tkinter
requires both a Python extension module compiled against
tcl/tk and tcl support files to be loaded at run-time.
All the
built-in Python distributions
shipping with PyOxidizer provide tkinter
support with the exception of the
Windows standalone_static
distributions.
However, the tcl support files aren’t installed by default.
To install tcl support files, you will need to set the
PythonExecutable.tcl_files_path
attribute of a
PythonExecutable
instance to the directory you
want to install these files into. e.g.
def make_exe(dist):
exe = dist.to_python_executable(name="myapp")
exe.tcl_files_path = "lib"
return exe
When tcl_files_path
is set to a non-None
value, the tcl files
required by tkinter
are installed in that directory and the built
executable will automatically set the TCL_LIBRARY
environment variable
at run-time so the tcl interpreter uses those files.
tcl Files Prevent Self-Contained Executables¶
The tcl interpreter needs to load various files off the filesystem at run-time. PyOxidizer does not (yet) support embedding these files in the binary and loading them from memory or extracting them at run-time.
So if you need to use tkinter
, you cannot have a single-file executable
that works without a dependency on tcl files elsewhere on the filesystem.