@classmethod def move(cls, x: int = 0, y: int = 0) -> "Control": """Move cursor relative to current position.
Args:
x (int): X offset.
y (int): Y offset.
Returns:
~Control: Control object.
"""
def get_codes() -> Iterable[ControlCode]:
control = ControlType if x: yield (
control.CURSOR_FORWARD if x > 0 else control.CURSOR_BACKWARD,
abs(x),
) if y: yield (
control.CURSOR_DOWN if y > 0 else control.CURSOR_UP,
abs(y),
)
control = cls(*get_codes()) return control
@classmethod def move_to_column(cls, x: int, y: int = 0) -> "Control": """Move to the given column, optionally add offset to row.
Returns:
x (int): absolute x (column)
y (int): optional y offset (row)
Returns:
~Control: Control object. """
return (
cls(
(ControlType.CURSOR_MOVE_TO_COLUMN, x),
(
ControlType.CURSOR_DOWN if y > 0 else ControlType.CURSOR_UP,
abs(y),
),
) if y else cls((ControlType.CURSOR_MOVE_TO_COLUMN, x))
)
Args:
x (int): x offset (column)
y (int): y offset (row)
Returns:
~Control: Control object. """ return cls((ControlType.CURSOR_MOVE_TO, x, y))
@classmethod def clear(cls) -> "Control": """Clear the screen.""" return cls(ControlType.CLEAR)
@classmethod def show_cursor(cls, show: bool) -> "Control": """Show or hide the cursor.""" return cls(ControlType.SHOW_CURSOR if show else ControlType.HIDE_CURSOR)
@classmethod def alt_screen(cls, enable: bool) -> "Control": """Enable or disable alt screen.""" if enable: return cls(ControlType.ENABLE_ALT_SCREEN, ControlType.HOME) else: return cls(ControlType.DISABLE_ALT_SCREEN)
@classmethod def title(cls, title: str) -> "Control": """Set the terminal window title
Args:
title (str): The new terminal window title """ return cls((ControlType.SET_WINDOW_TITLE, title))
def strip_control_codes(
text: str, _translate_table: Dict[int, None] = _CONTROL_STRIP_TRANSLATE
) -> str: """Remove control codes from text.
Args:
text (str): A string possibly contain control codes.
Returns:
str: String with control codes removed. """ return text.translate(_translate_table)
def escape_control_codes(
text: str,
_translate_table: Dict[int, str] = CONTROL_ESCAPE,
) -> str: """Replace control codes with their "escaped" equivalent in the given text.
(e.g. "\b" becomes "\\b")
Args:
text (str): A string possibly containing control codes.
Returns:
str: String with control codes replaced with their escaped version. """ return text.translate(_translate_table)
if __name__ == "__main__": # pragma: no cover from rich.console import Console
console = Console()
console.print("Look at the title of your terminal window ^") # console.print(Control((ControlType.SET_WINDOW_TITLE, "Hello, world!"))) for i in range(10):
console.set_window_title("🚀 Loading" + "." * i)
time.sleep(0.5)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.