prompt_toolkit was in the first place meant to be a replacement for
readline. However, when it became more mature, we realised that all the
components for full screen applications are there and prompt_toolkit is
very capable of handling many use cases. Pyvim and pymux are examples of full screen
applications.

Basically, at the core, prompt_toolkit has a layout engine, that supports
horizontal and vertical splits as well as floats, where each “window” can
display a user control. The API for user controls is simple yet powerful.

When prompt_toolkit is used to simply read some input from the user, it
uses a rather simple built-in layout. One that displays the default input
buffer and the prompt, a float for the autocompletions and a toolbar for input
validation which is hidden by default.

For full screen applications, usually we build the layout ourself, because it’s
very custom.

Further, there is a very flexible key binding system that can be programmed for
all the needs of full screen applications.