



[](https://github.com/ceccopierangiolieugenio/pyTermTk/actions?query=workflow%3Atesting)
[](https://pypi.org/project/pyTermTk)
[](https://twitter.com/hashtag/pyTermTk?src=hashtag_click& f=live)
[](https://pypi.org/project/pyTermTk)
## [python Terminal Toolkit](https://github.com/ceccopierangiolieugenio/pyTermTk)
Text-based user interface library ([TUI](https://en.wikipedia.org/wiki/Text-based_user_interface))
Evolved from the discontinued project [pyCuT ](https://github.com/ceccopierangiolieugenio/pyCuT )
and inspired by a mix of [Qt5 ](https://www.riverbankcomputing.com/static/Docs/PyQt5/ ),[GTK](https://pygobject.readthedocs.io/en/latest/), and [tkinter ](https://docs.python.org/3/library/tkinter.html ) api definition with a touch of personal interpretation
[](https://pypi.org/project/pyTermTk)
## Features
- Basic widgets for [TUI ](https://en.wikipedia.org/wiki/Text-based_user_interface ) 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
- [TBD] Fullsize/Halfsize UTF-8 characters
## Limitations
- Only the key combinations forwarded by the terminal emulator used are detected (ALT,CTRL may not be handled)
## Try
[](https://replit.com/@EugenioP/pyTermTk?v=1)
## [Tutorial](tutorial)
Be inspired by the [tutorial examples ](https://github.com/ceccopierangiolieugenio/pyTermTk/tree/main/tutorial )
## [Api Definitions](https://ceccopierangiolieugenio.github.io/pyTermTk/)
Don't get bored by the [Api Definitions ](https://ceccopierangiolieugenio.github.io/pyTermTk/ )
## Install/Upgrade
[pyTermTk ](https://github.com/ceccopierangiolieugenio/pyTermTk ) is available on [PyPI ](https://pypi.org/project/pyTermTk/ )
```shell
pip3 install --upgrade pyTermTk
```
## Quick Test/Try - no install required
#### Clone
```shell
clone git@github.com:ceccopierangiolieugenio/pyTermTk.git
cd pyTermTk
```
#### Run Basic (non ui) input test
```shell
python3 tests/test.input.py
```
#### Run demo
```shell
# Press CTRL-C to exit
# the logs are written to "session.log"
make runDemo
# or
python3 demo/demo.py -f
# Try gittk
make runGittk
```
#### Profiling
##### [cProfile](https://docs.python.org/3/library/profile.html), [cProfilev](https://github.com/ymichael/cprofilev)
```shell
python3 -m cProfile -o profiler.txt tests/test.ui.004.py
# install cprofilev:
# pip3 install cprofilev
cprofilev -f profiler.txt
# open http://127.0.0.1:4000
```
##### pyroscope
[pyroscope ](https://pyroscope.io/ ) can be used as well for profiling
## Related Projects
- honourable mention
- [bpytop ](https://github.com/aristocratos/bpytop ) - Linux/OSX/FreeBSD resource monitor < br >
This was the base inspiration for my core library
- Python
- [urwid ](https://github.com/urwid/urwid ) - Console user interface library for Python
- [pyTermGUI ](https://github.com/bczsalba/pytermgui ) - A simple yet powerful TUI framework for your Python (3.7+) applications
- [Textual ](https://github.com/Textualize/textual ) - TUI (Text User Interface) framework for Python inspired by modern web development
- [Rich ](https://github.com/Textualize/rich ) - Python library for rich text and beautiful formatting in the terminal
- [PyCuT ](https://github.com/ceccopierangiolieugenio/pyCuT ) - terminal graphic library loosely based on QT api (my previous failed attempt)
- Non Python
- [Turbo Vision ](http://tvision.sourceforge.net )
- [ncurses ](https://en.wikipedia.org/wiki/Ncurses )
- [tui.el ](https://github.com/ebpa/tui.el ) - An experimental text-based UI framework for Emacs modeled after React