レンダーグループ¶
Group
クラスを使用すると、コンソール内の複数のレンダリング可能な要素を、単一レンダリング可能要素のみが提供できるコンテキストでレンダリングできるようにグループ化できます。たとえば、Panel
内に複数のレンダリング可能な要素を表示することができます。
3 つ目のパネル内に 2 つのパネルをレンダリングするには、子レンダリング可能な要素を位置指定引数として使用して Group を構築してから、Panel 内にその結果をラップします
from rich import print
from rich.console import Group
from rich.panel import Panel
panel_group = Group(
Panel("Hello", style="on blue"),
Panel("World", style="on red"),
)
print(Panel(panel_group))
このパターンは、グループ内にどのレンダリング可能な要素が入っているか事前にわかっている場合に便利です。ただし、レンダリング可能な要素の数が多く、特に動的な場合は、面倒な場合があります。Rich には group()
デコレータが用意されており、このような状況に対応できます。デコレータは、レンダリング可能な要素のイテレータからグループを構築します。以下は、デコレータを使用した以前の例の同等です
from rich import print
from rich.console import group
from rich.panel import Panel
@group()
def get_panels():
yield Panel("Hello", style="on blue")
yield Panel("World", style="on red")
print(Panel(get_panels()))