[英]How to integrate Rich with Python curses?
我正在考慮使用 python curses
和rich
庫創建一個 CLI 應用程序。 由於curses
需要addstr
方法將文本打印為字符串,因此我無法使用rich
進行打印。 是否可以整合這兩個庫?
以下代碼不相應地工作!
import curses
from curses import wrapper
from rich.console import Console
console = Console()
with console.capture() as capture:
console.print("[bold red]Hello[/] World")
str_output = capture.get()
def main(stdscr):
stdscr.clear()
stdscr.addstr(str_output)
stdscr.refresh()
stdscr.getch()
wrapper(main)
Rich 的作者在這里。 Rich 和 Curses 可能無法很好地結合使用。 但是,您可以查看Textual ,這是我正在研究的一個 TUI 框架,它在底層使用 Rich。
看起來你想要 pipe 從rich
到curses
的內容,但是print()
function 實際上並沒有返回任何東西它只是在終端上創建 output 作為執行的副作用。
您可以通過查看type(print("[red]Hello[/red] World!"))
來<class 'NoneType'>
。
那么,如何從print(...)
中檢索 output 呢? 在rich 的文檔中,他們解釋了如何使用控制台 API 完成此操作:
from rich.console import Console
console = Console()
with console.capture() as capture:
console.print("[bold red]Hello[/] World")
str_output = capture.get()
>>> str_output
'\x1b[1;31mHello\x1b[0m World\n'
>>> print(str_output)
Hello World
>>> type(str_output)
<class 'str'>
這允許您從 print 訪問 output,然后您可以嘗試 pipe 將該信息詛咒。 由於顏色轉義碼在 shell 中的工作方式,如果你重疊它們的顏色上下文,你可能會遇到混合curses
和rich
的一些奇怪的干擾,所以要注意這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.