Skip to content

Commit af1cd75

Browse files
Added print_container utility.
1 parent 2678b9b commit af1cd75

File tree

3 files changed

+37
-1
lines changed

3 files changed

+37
-1
lines changed

examples/print-text/print-frame.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/usr/bin/env python
2+
"""
3+
Example usage of 'print_container', a tool to print
4+
any layout in a non-interactive way.
5+
"""
6+
from prompt_toolkit.shortcuts import print_container
7+
from prompt_toolkit.widgets import Frame, TextArea
8+
9+
10+
print_container(
11+
Frame(TextArea(text='Hello world!')))

prompt_toolkit/shortcuts/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import unicode_literals
22
from .dialogs import yes_no_dialog, button_dialog, input_dialog, message_dialog, radiolist_dialog, progress_dialog
33
from .prompt import PromptSession, prompt, confirm, create_confirm_session, CompleteStyle
4-
from .utils import print_formatted_text, clear, set_title, clear_title
4+
from .utils import print_formatted_text, print_container, clear, set_title, clear_title
55
from .progress_bar import ProgressBar
66

77

prompt_toolkit/shortcuts/utils.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
from __future__ import unicode_literals, print_function
2+
from prompt_toolkit.application import Application
3+
from prompt_toolkit.eventloop import get_event_loop
24
from prompt_toolkit.formatted_text import to_formatted_text
5+
from prompt_toolkit.layout import Layout
36
from prompt_toolkit.output import Output, ColorDepth
47
from prompt_toolkit.output.defaults import create_output, get_default_output
58
from prompt_toolkit.renderer import print_formatted_text as renderer_print_formatted_text
@@ -8,6 +11,7 @@
811

912
__all__ = [
1013
'print_formatted_text',
14+
'print_container',
1115
'clear',
1216
'set_title',
1317
'clear_title',
@@ -121,6 +125,27 @@ def to_text(val):
121125
output.flush()
122126

123127

128+
def print_container(container):
129+
"""
130+
Print any layout to the output in a non-interactive way.
131+
132+
Example usage::
133+
134+
from prompt_toolkit.widgets import Frame, TextArea
135+
print_container(
136+
Frame(TextArea(text='Hello world!')))
137+
"""
138+
def exit_immediately():
139+
# Use `call_from_executor` to exit "soon", so that we still render one
140+
# initial time, before exiting the application.
141+
get_event_loop().call_from_executor(
142+
lambda: app.exit())
143+
144+
app = Application(
145+
layout=Layout(container=container))
146+
app.run(pre_run=exit_immediately)
147+
148+
124149
def clear():
125150
"""
126151
Clear the screen.

0 commit comments

Comments
 (0)