Hướng dẫn python rich layout - bố cục phong phú python

Rich cung cấp một lớp

layout.split_column(
    Layout(name="upper"),
    Layout(name="lower")
)
print(layout)
1 có thể được sử dụng để chia vùng màn hình thành các phần, trong đó mỗi phần có thể chứa nội dung độc lập. Nó có thể được sử dụng với màn hình trực tiếp để tạo ra các ứng dụng toàn màn hình, nhưng có thể được sử dụng độc lập.Live Display to create full-screen “applications” but may be used standalone.

Để xem một ví dụ về bố cục, hãy chạy các phần sau từ dòng lệnh:

Tạo bố cục

Để xác định bố cục, xây dựng một đối tượng bố cục và in nó:

from rich import print
from rich.layout import Layout

layout = Layout()
print(layout)

Điều này sẽ vẽ một hộp kích thước của thiết bị đầu cuối với một số thông tin liên quan đến bố cục. Hộp là một người giữ chỗ của người Viking vì chúng tôi chưa thêm bất kỳ nội dung nào vào đó. Trước khi chúng tôi làm điều đó, hãy để Lôi tạo một bố cục thú vị hơn bằng cách gọi phương thức

layout.split_column(
    Layout(name="upper"),
    Layout(name="lower")
)
print(layout)
2 để chia bố cục thành hai vị trí phụ:

layout.split_column(
    Layout(name="upper"),
    Layout(name="lower")
)
print(layout)

Điều này sẽ chia màn hình đầu cuối thành hai phần có kích thước bằng nhau, một phần trên phần kia. Thuộc tính

layout.split_column(
    Layout(name="upper"),
    Layout(name="lower")
)
print(layout)
3 là một mã định danh nội bộ mà chúng ta có thể sử dụng để tra cứu lỗi phụ sau. Hãy để sử dụng nó để tạo ra một sự phân chia khác, lần này chúng tôi sẽ gọi
layout.split_column(
    Layout(name="upper"),
    Layout(name="lower")
)
print(layout)
4 để chia bố cục thấp hơn thành một hàng của hai vị trí phụ:

layout["lower"].split_row(
    Layout(name="left"),
    Layout(name="right"),
)
print(layout)

Bây giờ bạn sẽ thấy khu vực màn hình được chia thành 3 phần; Một nửa trên và một nửa dưới được chia thành hai quý.

╭─────────────────────────────── 'upper' (84 x 13) ────────────────────────────────╮
                                                                                  
                                                                                  
                                                                                  
                                                                                  
                                                                                  
          {'size': None, 'minimum_size': 1, 'ratio': 1, 'name': 'upper'}          
                                                                                  
                                                                                  
                                                                                  
                                                                                  
                                                                                  
╰──────────────────────────────────────────────────────────────────────────────────╯
╭─────────── 'left' (42 x 14) ───────────╮╭────────── 'right' (42 x 14) ───────────╮
                                        ││                                        
                                        ││                                        
                                        ││                                        
         {                              ││         {                              
             'size': None,              ││             'size': None,              
             'minimum_size': 1,         ││             'minimum_size': 1,         
             'ratio': 1,                ││             'ratio': 1,                
             'name': 'left'             ││             'name': 'right'            
         }                              ││         }                              
                                        ││                                        
                                        ││                                        
                                        ││                                        
╰────────────────────────────────────────╯╰────────────────────────────────────────╯

Bạn có thể tiếp tục gọi Split () theo cách này để tạo bao nhiêu phần cho màn hình như bạn muốn.

Cài đặt Renderables¶

Đối số vị trí đầu tiên cho

layout.split_column(
    Layout(name="upper"),
    Layout(name="lower")
)
print(layout)
1 có thể là bất kỳ kết xuất phong phú nào, sẽ có kích thước phù hợp trong khu vực bố cục. Ở đây, cách thức chúng ta có thể chia bố cục bên phải của người Viking thành hai bảng:

layout["right"].split(
    Layout(Panel("Hello")),
    Layout(Panel("World!"))
)

Bạn cũng có thể gọi

layout.split_column(
    Layout(name="upper"),
    Layout(name="lower")
)
print(layout)
6 để đặt hoặc thay thế hiện tại có thể hiển thị:

layout["left"].update(
    "The mystery of life isn't a problem to solve, but a reality to experience."
)
print(layout)

Kích thước cố định¶

Bạn có thể đặt bố cục để sử dụng kích thước cố định bằng cách đặt đối số

layout.split_column(
    Layout(name="upper"),
    Layout(name="lower")
)
print(layout)
7 trên hàm tạo bố cục hoặc bằng cách đặt thuộc tính. Đây là một ví dụ:

layout["upper"].size = 10
print(layout)

Điều này sẽ đặt phần trên là chính xác 10 hàng, bất kể kích thước của thiết bị đầu cuối. Nếu bố cục cha là ngang chứ không phải dọc, thì kích thước áp dụng cho số lượng ký tự thay vì các hàng.

Tỉ lệ¶

Ngoài kích thước cố định, bạn cũng có thể tạo bố cục linh hoạt cài đặt đối số

layout.split_column(
    Layout(name="upper"),
    Layout(name="lower")
)
print(layout)
8 trên hàm tạo hoặc bằng cách gán cho thuộc tính. Tỷ lệ xác định số lượng màn hình mà bố cục nên chiếm liên quan đến các bố cục khác. Ví dụ: hãy để đặt lại kích thước và đặt tỷ lệ của bố cục trên thành 2:

layout["upper"].size = None
layout["upper"].ratio = 2
print(layout)

Điều này làm cho bố cục trên cùng chiếm hai phần ba không gian. Điều này là do tỷ lệ mặc định là 1, tạo cho bố cục trên và dưới tổng số kết hợp 3. Vì bố cục trên có tỷ lệ 2, nó chiếm hai phần ba không gian, để lại phần ba còn lại cho bố cục thấp hơn.

Một bố cục với một bộ tỷ lệ cũng có thể có kích thước tối thiểu để ngăn chặn nó quá nhỏ. Chẳng hạn, ở đây, cách thức chúng ta có thể đặt kích thước tối thiểu của lớp phụ thấp hơn để nó giành được sự thu hẹp vượt quá 10 hàng:

layout["lower"].minimum_size = 10

Hiển thị¶

Bạn có thể tạo ra một bố cục vô hình bằng cách đặt thuộc tính

layout.split_column(
    Layout(name="upper"),
    Layout(name="lower")
)
print(layout)
9 thành false. Đây là một ví dụ:

layout["upper"].visible = False
print(layout)

Bố cục trên cùng hiện tại là vô hình và bố cục thấp hơn của Lower sẽ mở rộng để lấp đầy không gian có sẵn. Đặt

layout.split_column(
    Layout(name="upper"),
    Layout(name="lower")
)
print(layout)
9 thành đúng để mang nó trở lại:

layout.split_column(
    Layout(name="upper"),
    Layout(name="lower")
)
print(layout)
0

Bạn có thể sử dụng điều này để chuyển đổi các phần của giao diện dựa trên cấu hình ứng dụng của bạn.

Cây¶

Để giúp trực quan hóa các bố cục phức tạp, bạn có thể in thuộc tính

layout["lower"].split_row(
    Layout(name="left"),
    Layout(name="right"),
)
print(layout)
1 sẽ hiển thị tóm tắt của bố cục dưới dạng cây:

Thí dụ¶

Xem FullScreen.py để biết một ví dụ kết hợp

layout.split_column(
    Layout(name="upper"),
    Layout(name="lower")
)
print(layout)
1 và
layout["lower"].split_row(
    Layout(name="left"),
    Layout(name="right"),
)
print(layout)
3 để tạo một ứng dụng toàn màn hình.