| ================================================================================ | |
| TKINTER - USER GUIDE (Android Python STB) - Generated by RIMI | |
| ================================================================================ | |
| WHAT THIS IS | |
| ------------ | |
| tkinter 8.6.14 - the standard Python GUI toolkit (Tcl/Tk) for Android. | |
| Each wheel is fully self-contained: the Tcl 8.6.14 + Tk 8.6.14 shared | |
| libraries (the whole X11 client stack - Xau, Xdmcp, xcb, X11, Xext, | |
| Xrender, Xss, Xft, fontconfig, expat, freetype, libpng - is statically | |
| merged INSIDE libtk8.6.so), the _tkinter C extension for CPython 3.12, | |
| the Tcl/Tk script libraries (incl. tzdata for the `clock` command), a | |
| pruned X11 locale set, and a 2-font DejaVu subset with its own | |
| fonts.conf. No other package is required (no dependencies). | |
| tkinter-8.6.14-cp312-cp312-android_24_arm64_v8a.whl (real ARM64 phones) | |
| tkinter-8.6.14-cp312-cp312-android_24_x86_64.whl (x86_64 emulators) | |
| REQUIREMENT: COMPANION X SERVER | |
| -------------------------------- | |
| Android has no X server of its own. Install the Termux:X11 companion app | |
| and start it BEFORE creating any window. This wheel talks to it over TCP: | |
| import os | |
| os.environ["DISPLAY"] = "127.0.0.1:0" # Termux:X11 default TCP display | |
| # os.environ["XAUTHORITY"] = ... # only if you enabled X auth | |
| Unix-socket DISPLAY values (":0") can NOT work across Android app | |
| sandboxes - always use the TCP form above. | |
| INSTALL | |
| ------- | |
| 1. Install the wheel matching your device architecture via PipManager. | |
| 2. No extra packages, no TCL_LIBRARY/TK_LIBRARY setup: importing the | |
| bootstrap module below wires everything to the bundled files. | |
| QUICK START | |
| ----------- | |
| import _tk_android # MUST come first: preloads libtcl/libtk, | |
| # sets TCL_LIBRARY/TK_LIBRARY/XLOCALEDIR/ | |
| # FONTCONFIG_FILE, writes fonts/fonts.conf | |
| import tkinter | |
| from tkinter import ttk | |
| root = tkinter.Tk() # needs Termux:X11 running + DISPLAY set | |
| root.title("Hello Android") | |
| ttk.Label(root, text="DejaVu via bundled fonts.conf").pack() | |
| ttk.Button(root, text="Quit", command=root.destroy).pack() | |
| root.mainloop() | |
| HEADLESS Tcl (no display needed): | |
| import _tk_android, _tkinter | |
| t = _tkinter.create(None, None, "Tk", 0, 0, 0, 0, None) # wantTk=0 | |
| t.call("expr", "6*7") # -> '42' | |
| t.call("info", "patchlevel") # -> '8.6.14' | |
| API GOTCHAS | |
| ----------- | |
| - `import _tk_android` first, in EVERY script (it only uses setdefault: | |
| values you exported yourself still win). | |
| - This wheel ships NO `tkinter/` package dir, so the app's stdlib | |
| `tkinter/*.py` is always used; only the `_tkinter` extension (which the | |
| app does not ship) comes from the wheel. | |
| - Fonts: only DejaVuSans + DejaVuSans-Bold are bundled (1.4 MB). The | |
| generated fonts.conf also lists /system/fonts as fallback, so device | |
| Droid fonts remain reachable by family name. | |
| - X11 locale data is pruned to C + en_US.UTF-8 + iso8859-1. Non-UTF8 | |
| locales and Compose tables for other languages are NOT included. | |
| - `t.call("clock", ...)` timezones work: tzdata (609 files) is vendored. | |
| - Tested surface (see Test_Tkinter.py, 10 checks, import-level only): | |
| bootstrap import, env wiring, fonts.conf generation, bundled libs | |
| present, _tkinter import, headless Tcl interp, patchlevel 8.6.14, | |
| expr arithmetic, clock+tzdata, stdlib tkinter unshadowed. The GUI | |
| window test is a later device phase (needs Termux:X11 on device). | |
| VERSIONS INSIDE | |
| --------------- | |
| Tcl/Tk 8.6.14 | xorgproto 2025.1 | xtrans 1.6.0 | xcb-proto 1.17.0 | | |
| libXau 1.0.12 | libXdmcp 1.1.5 | libxcb 1.17.0 | libX11 1.8.13 | | |
| libXext 1.3.7 | libXrender 0.9.12 | libXss 1.2.5 | libXft 2.3.9 | | |
| libpng 1.6.58 | expat 2.8.4 | freetype 2.14.3 | fontconfig 2.18.3 | | |
| DejaVu 2.37 (Sans + Sans-Bold) | CPython 3.12 | API 24+. | |
| All 12 Termux Android patches applied; Xft enabled; PythonSTB-RIMI-Build. | |
| ================================================================================ | |
| Generated by RIMI | |
| ================================================================================ | |