Python Terminal Toolkit
Project description
pyTermTk
(python Terminal Toolkit) is a Text-based user interface library (TUI) Evolved from the discontinued project pyCuT and inspired by a mix of Qt5,GTK, and tkinter api definition with a touch of personal interpretation
Features
- Basic widgets for TUI development (Button, Label, checkbox, ...)
- Specialized widgets to improve the usability (Windows, Frames, Tables, ...)
- QT Like Layout system to help arrange the widgets in the terminal
- True color support
- Ful/Half/Zero sized Unicode characters 😎
Limitations
- The native Windows porting is not ready yet but it works with Cygwin or WSL.
- Only the key combinations forwarded by the terminal emulator used are detected (ALT,CTRL may not be handled)
Try the Sandbox straight from your browser
Powered by Pyodide and xterm.js and CodeMirror5 and w2ui
the Tutorials and the Examples
Be inspired by the Tutorials and the Examples
Api Definitions
Don't get bored by the Api Definitions
ttkDesigner
Smell deliciousness with the official pyTermTk tool for designing and building Text-based user interfaces (TUIs)
Install/Upgrade
pip3 install --upgrade pyTermTk
Quick Test/Try - no install required
Clone
git clone https://github.com/ceccopierangiolieugenio/pyTermTk.git
cd pyTermTk
Run Basic (non ui) input test
python3 tests/test.input.py
Demos
# Press CTRL-C to exit
# the logs are written to "session.log"
# add "-f" option to run it in "fullscreen" :-D
# Showcase Demo
python3 demo/demo.py -f
# Paint demo
python3 demo/paint.py
# VSCode like d'n d layout demo
python3 demo/ttkode.py
# early gittk demo
python3 demo/gittk.py
# Text edit with "Pygments" highlight integrated
# it require pygments
# pip install pygments
python3 tests/test.ui.018.TextEdit.Pygments.py README.md
Debug
There are few ENV Variables that can be used to force some debugging features;
(TERMTK_FILE_LOG) - Log to a file
To force logging to a file
TERMTK_FILE_LOG=session.log python3 demo/demo.py
(TERMTK_STACKTRACE) - Force stacktrace generation with CTRL+C
Use this env variable to force a stacktrace generation to the file defined (i.e. "stacktrace.txt")
TERMTK_STACKTRACE=stacktrace.txt python3 demo/demo.py
Profiling
VizTracer
this tool is able to generate a tracker file that can be viewed using Perfetto (UI)
# install cprofilev:
# pip3 install viztracer
viztracer --tracer_entries 10000010 tests/test.ui.030.menu.01.py
# View the results
# loading the "result.json" in https://ui.perfetto.dev
# or running
vizviewer result.json
cProfile, cProfilev
python3 -m cProfile -o profiler.bin tests/test.ui.004.py
# install cprofilev:
# pip3 install cprofilev
cprofilev -f profiler.bin
# open http://127.0.0.1:4000
py-spy
# install
pip install py-spy
# run the application
python3 demo/demo.py
# on another terminal run the py-spy
sudo env "PATH=$PATH" \
py-spy top \
--pid $(ps -A -o pid,cmd | grep demo.py | grep -v grep | sed 's,python.*,,')
pyroscope
pyroscope can be used as well for profiling
Projects using pyTermTk
- ttkDesigner - the official pyTermTk tool for designing and building Text-based user interfaces (TUIs)
- tlogg - A fast, advanced log explorer.
- ttkode - TerminalToolKit (Studio) Code (editor)
- pytest-fold - A Pytest plugin to make console output more manageable when there are multiple failed tests
- pytest-tui - A Text User Interface (TUI) for Pytest, automatically launched after your test run is finished
Related Projects
-
Honourable mention
- bpytop - Linux/OSX/FreeBSD resource monitor
This was the base inspiration for my core library
- bpytop - Linux/OSX/FreeBSD resource monitor
-
Python
- urwid - Console user interface library for Python
- pyTermGUI - A simple yet powerful TUI framework for your Python (3.7+) applications
- Textual - TUI (Text User Interface) framework for Python inspired by modern web development
- Rich - Python library for rich text and beautiful formatting in the terminal
- PyCuT - terminal graphic library loosely based on QT api (my previous failed attempt)
- pyTooling.TerminalUI - A set of helpers to implement a text user interface (TUI) in a terminal.
-
Non Python
- Turbo Vision
- ncurses
- tui.el - An experimental text-based UI framework for Emacs modeled after React
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pyTermTk-0.34.0a7-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 962e31b9a69bcea61325eac45ccf3337d7b7c163c89b507ff6056a8c74a41b51 |
|
MD5 | b1f9af7f19766798322470ed57c84fd4 |
|
BLAKE2b-256 | f5db9c3246ba67c194e99e46c76952bf0ee0d0f609d029ca8c9c28e4aaea0793 |