#!/usr/bin/env python """ Horizontal align demo with HSplit. """ from prompt_toolkit.application import Application from prompt_toolkit.formatted_text import HTML from prompt_toolkit.key_binding import KeyBindings from prompt_toolkit.layout.containers import ( HorizontalAlign, HSplit, VerticalAlign, VSplit, Window, WindowAlign, ) from prompt_toolkit.layout.controls import FormattedTextControl from prompt_toolkit.layout.layout import Layout from prompt_toolkit.widgets import Frame TITLE = HTML( """ HSplit HorizontalAlign example. Press 'q' to quit.""" ) LIPSUM = """\ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas quis interdum enim.""" # 1. The layout body = HSplit( [ Frame( Window(FormattedTextControl(TITLE), height=2), style="bg:#88ff88 #000000" ), HSplit( [ # Left alignment. VSplit( [ Window( FormattedTextControl(HTML("LEFT")), width=10, ignore_content_width=True, style="bg:#ff3333 ansiblack", align=WindowAlign.CENTER, ), VSplit( [ Window( FormattedTextControl(LIPSUM), height=4, style="bg:#444488", ), Window( FormattedTextControl(LIPSUM), height=4, style="bg:#444488", ), Window( FormattedTextControl(LIPSUM), height=4, style="bg:#444488", ), ], padding=1, padding_style="bg:#888888", align=HorizontalAlign.LEFT, height=5, padding_char="|", ), ] ), # Center alignment. VSplit( [ Window( FormattedTextControl(HTML("CENTER")), width=10, ignore_content_width=True, style="bg:#ff3333 ansiblack", align=WindowAlign.CENTER, ), VSplit( [ Window( FormattedTextControl(LIPSUM), height=4, style="bg:#444488", ), Window( FormattedTextControl(LIPSUM), height=4, style="bg:#444488", ), Window( FormattedTextControl(LIPSUM), height=4, style="bg:#444488", ), ], padding=1, padding_style="bg:#888888", align=HorizontalAlign.CENTER, height=5, padding_char="|", ), ] ), # Right alignment. VSplit( [ Window( FormattedTextControl(HTML("RIGHT")), width=10, ignore_content_width=True, style="bg:#ff3333 ansiblack", align=WindowAlign.CENTER, ), VSplit( [ Window( FormattedTextControl(LIPSUM), height=4, style="bg:#444488", ), Window( FormattedTextControl(LIPSUM), height=4, style="bg:#444488", ), Window( FormattedTextControl(LIPSUM), height=4, style="bg:#444488", ), ], padding=1, padding_style="bg:#888888", align=HorizontalAlign.RIGHT, height=5, padding_char="|", ), ] ), # Justify VSplit( [ Window( FormattedTextControl(HTML("JUSTIFY")), width=10, ignore_content_width=True, style="bg:#ff3333 ansiblack", align=WindowAlign.CENTER, ), VSplit( [ Window( FormattedTextControl(LIPSUM), style="bg:#444488" ), Window( FormattedTextControl(LIPSUM), style="bg:#444488" ), Window( FormattedTextControl(LIPSUM), style="bg:#444488" ), ], padding=1, padding_style="bg:#888888", align=HorizontalAlign.JUSTIFY, height=5, padding_char="|", ), ] ), ], padding=1, padding_style="bg:#ff3333 #ffffff", padding_char=".", align=VerticalAlign.TOP, ), ] ) # 2. Key bindings kb = KeyBindings() @kb.add("q") def _(event): "Quit application." event.app.exit() # 3. The `Application` application = Application(layout=Layout(body), key_bindings=kb, full_screen=True) def run(): application.run() if __name__ == "__main__": run()