62 lines
1.6 KiB
Python
62 lines
1.6 KiB
Python
from typing import Any
|
|
from typing import Optional
|
|
|
|
from prompt_toolkit import PromptSession
|
|
from prompt_toolkit.formatted_text import to_formatted_text
|
|
from prompt_toolkit.key_binding import KeyBindings
|
|
from prompt_toolkit.keys import Keys
|
|
from prompt_toolkit.styles import Style
|
|
|
|
from questionary.question import Question
|
|
from questionary.styles import merge_styles_default
|
|
|
|
|
|
def press_any_key_to_continue(
|
|
message: Optional[str] = None,
|
|
style: Optional[Style] = None,
|
|
**kwargs: Any,
|
|
):
|
|
"""Wait until user presses any key to continue.
|
|
|
|
Example:
|
|
>>> import questionary
|
|
>>> questionary.press_any_key_to_continue().ask()
|
|
Press any key to continue...
|
|
''
|
|
|
|
Args:
|
|
message: Question text. Defaults to ``"Press any key to continue..."``
|
|
|
|
style: A custom color and style for the question parts. You can
|
|
configure colors as well as font types for different elements.
|
|
|
|
Returns:
|
|
:class:`Question`: Question instance, ready to be prompted (using ``.ask()``).
|
|
"""
|
|
merged_style = merge_styles_default([style])
|
|
|
|
if message is None:
|
|
message = "Press any key to continue..."
|
|
|
|
def get_prompt_tokens():
|
|
tokens = []
|
|
|
|
tokens.append(("class:question", f" {message} "))
|
|
|
|
return to_formatted_text(tokens)
|
|
|
|
def exit_with_result(event):
|
|
event.app.exit(result=None)
|
|
|
|
bindings = KeyBindings()
|
|
|
|
@bindings.add(Keys.Any)
|
|
def any_key(event):
|
|
exit_with_result(event)
|
|
|
|
return Question(
|
|
PromptSession(
|
|
get_prompt_tokens, key_bindings=bindings, style=merged_style, **kwargs
|
|
).app
|
|
)
|