簡體   English   中英

如何將 Rich 與 Python 詛咒集成?

[英]How to integrate Rich with Python curses?

我正在考慮使用 python cursesrich庫創建一個 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 從richcurses的內容,但是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 中的工作方式,如果你重疊它們的顏色上下文,你可能會遇到混合cursesrich的一些奇怪的干擾,所以要注意這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM