Hướng dẫn simple-term-menu python - python-menu đơn giản

Tổng quan

yay -S python-simple-term-menu
4 Tạo các menu đơn giản cho các chương trình dòng lệnh tương tác. Nó có thể được sử dụng để cung cấp một sự lựa chọn các tùy chọn khác nhau cho người dùng. Các mục nhập menu có thể được chọn với các phím Mũi tên, J/K hoặc Emacs (C-N/C-P). Mô -đun sử dụng cơ sở dữ liệu đầu cuối để tự động phát hiện các tính năng thiết bị đầu cuối và vô hiệu hóa các kiểu không có sẵn. Hiện tại, Linux và MacOS được hỗ trợ.

Phá vỡ thay đổi

Từ phiên bản 0.x đến 1.x

Nếu bạn cập nhật từ phiên bản 0.x đến 1.x, vui lòng xem xét các thay đổi phá vỡ sau:

  • Trình xây dựng

    yay -S python-simple-term-menu
    
    5 bây giờ chỉ lấy các đối số chỉ có từ khóa (ngoại trừ tham số đầu tiên chứa các mục menu). Điều này giúp thêm các tham số mới trong các bản phát hành trong tương lai và cho phép giữ một danh sách tham số được sắp xếp tốt.

  • Giao diện dòng lệnh đã được sửa đổi. Bây giờ nó sử dụng

    yay -S python-simple-term-menu
    
    6 thay vì
    yay -S python-simple-term-menu
    
    7 để tách các từ một cách nhất quán và sắp xếp lại các tùy chọn ngắn. Chỉ có các tùy chọn ngắn quan trọng nhất được lưu giữ để lưu các chữ cái miễn phí cho các bản phát hành trong tương lai.

Từ phiên bản 1.1 đến 1.2

  • Tham số

    yay -S python-simple-term-menu
    
    8 hiện được đặt tên là
    yay -S python-simple-term-menu
    
    9 và lấy một khóa học và theo mặc định
    #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    def main():
        options = ["entry 1", "entry 2", "entry 3"]
        terminal_menu = TerminalMenu(options)
        menu_entry_index = terminal_menu.show()
        print(f"You have selected {options[menu_entry_index]}!")
    
    if __name__ == "__main__":
        main()
    
    0 và
    #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    def main():
        options = ["entry 1", "entry 2", "entry 3"]
        terminal_menu = TerminalMenu(options)
        menu_entry_index = terminal_menu.show()
        print(f"You have selected {options[menu_entry_index]}!")
    
    if __name__ == "__main__":
        main()
    
    1 hiện được sử dụng làm khóa đa chọn. Điều này cho phép chuyển đổi các mục đã chọn trong chế độ tìm kiếm.

  • Tham số

    #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    def main():
        options = ["entry 1", "entry 2", "entry 3"]
        terminal_menu = TerminalMenu(options)
        menu_entry_index = terminal_menu.show()
        print(f"You have selected {options[menu_entry_index]}!")
    
    if __name__ == "__main__":
        main()
    
    2 được đổi tên thành
    #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    def main():
        options = ["entry 1", "entry 2", "entry 3"]
        terminal_menu = TerminalMenu(options)
        menu_entry_index = terminal_menu.show()
        print(f"You have selected {options[menu_entry_index]}!")
    
    if __name__ == "__main__":
        main()
    
    3 để phù hợp hơn với tham số
    #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    def main():
        options = ["entry 1", "entry 2", "entry 3"]
        terminal_menu = TerminalMenu(options)
        menu_entry_index = terminal_menu.show()
        print(f"You have selected {options[menu_entry_index]}!")
    
    if __name__ == "__main__":
        main()
    
    4 mới.

Cài đặt

yay -S python-simple-term-menu
4 có sẵn trên PYPI cho Python 3.5+ và có thể được cài đặt với
#!/usr/bin/env python3

from simple_term_menu import TerminalMenu

def main():
    options = ["entry 1", "entry 2", "entry 3"]
    terminal_menu = TerminalMenu(options)
    menu_entry_index = terminal_menu.show()
    print(f"You have selected {options[menu_entry_index]}!")

if __name__ == "__main__":
    main()
6:

python3 -m pip install simple-term-menu

Nếu bạn sử dụng Arch Linux hoặc một trong những dẫn xuất của nó, bạn cũng có thể cài đặt

yay -S python-simple-term-menu
4 từ AUR:

yay -S python-simple-term-menu

Bạn cũng tìm thấy các tệp thực thi khép kín cho các bản phân phối Linux 64 bit và MacOS High Sierra và mới hơn trên trang phát hành. Chúng được tạo bằng pyinstaller và chỉ yêu cầu glibc> = 2.17 trên linux (sẽ ổn trên bất kỳ hệ thống Linux gần đây nào).

Cách sử dụng

Tạo một menu với kiểu mặc định

Tạo một thể hiện của lớp

yay -S python-simple-term-menu
5 và chuyển các mục menu dưới dạng danh sách các chuỗi cho hàm tạo. Gọi phương thức
#!/usr/bin/env python3

from simple_term_menu import TerminalMenu

def main():
    options = ["entry 1", "entry 2", "entry 3"]
    terminal_menu = TerminalMenu(options)
    menu_entry_index = terminal_menu.show()
    print(f"You have selected {options[menu_entry_index]}!")

if __name__ == "__main__":
    main()
9 để xuất menu và đợi đầu vào bàn phím:

#!/usr/bin/env python3

from simple_term_menu import TerminalMenu

def main():
    options = ["entry 1", "entry 2", "entry 3"]
    terminal_menu = TerminalMenu(options)
    menu_entry_index = terminal_menu.show()
    print(f"You have selected {options[menu_entry_index]}!")

if __name__ == "__main__":
    main()

Bạn sẽ nhận được một đầu ra như:

Hướng dẫn simple-term-menu python - python-menu đơn giản

Bây giờ bạn có thể chọn một mục nhập menu với các phím mũi tên hoặc ________ 30/________ 31 (chuyển động VIM) và chấp nhận sự lựa chọn của bạn bằng cách nhấn hoặc hủy menu bằng Escape,

#!/usr/bin/env python3

import os
from simple_term_menu import TerminalMenu


def main():
    fruits = ["[a] apple", "[b] banana", "[o] orange"]
    terminal_menu = TerminalMenu(fruits, title="Fruits")
    menu_entry_index = terminal_menu.show()


if __name__ == "__main__":
    main()
2 hoặc
#!/usr/bin/env python3

import os
from simple_term_menu import TerminalMenu


def main():
    fruits = ["[a] apple", "[b] banana", "[o] orange"]
    terminal_menu = TerminalMenu(fruits, title="Fruits")
    menu_entry_index = terminal_menu.show()


if __name__ == "__main__":
    main()
3.
#!/usr/bin/env python3

from simple_term_menu import TerminalMenu

def main():
    options = ["entry 1", "entry 2", "entry 3"]
    terminal_menu = TerminalMenu(options)
    menu_entry_index = terminal_menu.show()
    print(f"You have selected {options[menu_entry_index]}!")

if __name__ == "__main__":
    main()
9 Trả về chỉ mục nhập menu đã chọn hoặc
#!/usr/bin/env python3

import os
from simple_term_menu import TerminalMenu


def main():
    fruits = ["[a] apple", "[b] banana", "[o] orange"]
    terminal_menu = TerminalMenu(fruits, title="Fruits")
    menu_entry_index = terminal_menu.show()


if __name__ == "__main__":
    main()
5 nếu menu bị hủy.

Bạn có thể chuyển một

#!/usr/bin/env python3

import os
from simple_term_menu import TerminalMenu


def main():
    fruits = ["[a] apple", "[b] banana", "[o] orange"]
    terminal_menu = TerminalMenu(fruits, title="Fruits")
    menu_entry_index = terminal_menu.show()


if __name__ == "__main__":
    main()
6 tùy chọn cho hàm tạo
yay -S python-simple-term-menu
5 sẽ được đặt phía trên menu.
#!/usr/bin/env python3

import os
from simple_term_menu import TerminalMenu


def main():
    fruits = ["[a] apple", "[b] banana", "[o] orange"]
    terminal_menu = TerminalMenu(fruits, title="Fruits")
    menu_entry_index = terminal_menu.show()


if __name__ == "__main__":
    main()
6 có thể là một chuỗi đơn giản, một chuỗi đa dòng (với
#!/usr/bin/env python3

import os
from simple_term_menu import TerminalMenu


def main():
    fruits = ["[a] apple", "[b] banana", "[o] orange"]
    terminal_menu = TerminalMenu(fruits, title="Fruits")
    menu_entry_index = terminal_menu.show()


if __name__ == "__main__":
    main()
9 Newlines) hoặc một danh sách các chuỗi. Điều tương tự cũng áp dụng cho tham số
#!/usr/bin/env python3

from simple_term_menu import TerminalMenu


def main():
    terminal_menu = TerminalMenu(["entry 1", "entry 2", "entry 3"], accept_keys=("enter", "alt-d", "ctrl-i"))
    menu_entry_index = terminal_menu.show()
    print(terminal_menu.chosen_accept_key)


if __name__ == "__main__":
    main()
0, đặt một thanh trạng thái bên dưới menu. Ngoài ra, bạn có thể sử dụng tham số
#!/usr/bin/env python3

from simple_term_menu import TerminalMenu


def main():
    terminal_menu = TerminalMenu(["entry 1", "entry 2", "entry 3"], accept_keys=("enter", "alt-d", "ctrl-i"))
    menu_entry_index = terminal_menu.show()
    print(terminal_menu.chosen_accept_key)


if __name__ == "__main__":
    main()
0 có thể gọi được lấy mục nhập hiện được chọn và trả về chuỗi thanh trạng thái.

Kiểu dáng

Bạn có thể chuyển các đối số kiểu dáng cho hàm tạo

yay -S python-simple-term-menu
5. Mỗi phong cách là một bộ của chuỗi từ khóa. Hiện tại các từ khóa sau được chấp nhận:

  • #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    
    def main():
        terminal_menu = TerminalMenu(["entry 1", "entry 2", "entry 3"], accept_keys=("enter", "alt-d", "ctrl-i"))
        menu_entry_index = terminal_menu.show()
        print(terminal_menu.chosen_accept_key)
    
    
    if __name__ == "__main__":
        main()
    
    3
  • #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    
    def main():
        terminal_menu = TerminalMenu(["entry 1", "entry 2", "entry 3"], accept_keys=("enter", "alt-d", "ctrl-i"))
        menu_entry_index = terminal_menu.show()
        print(terminal_menu.chosen_accept_key)
    
    
    if __name__ == "__main__":
        main()
    
    4
  • #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    
    def main():
        terminal_menu = TerminalMenu(["entry 1", "entry 2", "entry 3"], accept_keys=("enter", "alt-d", "ctrl-i"))
        menu_entry_index = terminal_menu.show()
        print(terminal_menu.chosen_accept_key)
    
    
    if __name__ == "__main__":
        main()
    
    5
  • #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    
    def main():
        terminal_menu = TerminalMenu(["entry 1", "entry 2", "entry 3"], accept_keys=("enter", "alt-d", "ctrl-i"))
        menu_entry_index = terminal_menu.show()
        print(terminal_menu.chosen_accept_key)
    
    
    if __name__ == "__main__":
        main()
    
    6
  • #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    
    def main():
        terminal_menu = TerminalMenu(["entry 1", "entry 2", "entry 3"], accept_keys=("enter", "alt-d", "ctrl-i"))
        menu_entry_index = terminal_menu.show()
        print(terminal_menu.chosen_accept_key)
    
    
    if __name__ == "__main__":
        main()
    
    7
  • #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    
    def main():
        terminal_menu = TerminalMenu(["entry 1", "entry 2", "entry 3"], accept_keys=("enter", "alt-d", "ctrl-i"))
        menu_entry_index = terminal_menu.show()
        print(terminal_menu.chosen_accept_key)
    
    
    if __name__ == "__main__":
        main()
    
    8
  • #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    
    def main():
        terminal_menu = TerminalMenu(["entry 1", "entry 2", "entry 3"], accept_keys=("enter", "alt-d", "ctrl-i"))
        menu_entry_index = terminal_menu.show()
        print(terminal_menu.chosen_accept_key)
    
    
    if __name__ == "__main__":
        main()
    
    9
  • #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    
    def main():
        terminal_menu = TerminalMenu(
            ["dog", "cat", "mouse", "squirrel"],
            multi_select=True,
            show_multi_select_hint=True,
        )
        menu_entry_indices = terminal_menu.show()
        print(menu_entry_indices)
        print(terminal_menu.chosen_menu_entries)
    
    
    if __name__ == "__main__":
        main()
    
    0
  • #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    
    def main():
        terminal_menu = TerminalMenu(
            ["dog", "cat", "mouse", "squirrel"],
            multi_select=True,
            show_multi_select_hint=True,
        )
        menu_entry_indices = terminal_menu.show()
        print(menu_entry_indices)
        print(terminal_menu.chosen_menu_entries)
    
    
    if __name__ == "__main__":
        main()
    
    1
  • #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    
    def main():
        terminal_menu = TerminalMenu(
            ["dog", "cat", "mouse", "squirrel"],
            multi_select=True,
            show_multi_select_hint=True,
        )
        menu_entry_indices = terminal_menu.show()
        print(menu_entry_indices)
        print(terminal_menu.chosen_menu_entries)
    
    
    if __name__ == "__main__":
        main()
    
    2
  • #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    
    def main():
        terminal_menu = TerminalMenu(
            ["dog", "cat", "mouse", "squirrel"],
            multi_select=True,
            show_multi_select_hint=True,
        )
        menu_entry_indices = terminal_menu.show()
        print(menu_entry_indices)
        print(terminal_menu.chosen_menu_entries)
    
    
    if __name__ == "__main__":
        main()
    
    3
  • #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    
    def main():
        terminal_menu = TerminalMenu(
            ["dog", "cat", "mouse", "squirrel"],
            multi_select=True,
            show_multi_select_hint=True,
        )
        menu_entry_indices = terminal_menu.show()
        print(menu_entry_indices)
        print(terminal_menu.chosen_menu_entries)
    
    
    if __name__ == "__main__":
        main()
    
    4
  • #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    
    def main():
        terminal_menu = TerminalMenu(
            ["dog", "cat", "mouse", "squirrel"],
            multi_select=True,
            show_multi_select_hint=True,
        )
        menu_entry_indices = terminal_menu.show()
        print(menu_entry_indices)
        print(terminal_menu.chosen_menu_entries)
    
    
    if __name__ == "__main__":
        main()
    
    5
  • #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    
    def main():
        terminal_menu = TerminalMenu(
            ["dog", "cat", "mouse", "squirrel"],
            multi_select=True,
            show_multi_select_hint=True,
        )
        menu_entry_indices = terminal_menu.show()
        print(menu_entry_indices)
        print(terminal_menu.chosen_menu_entries)
    
    
    if __name__ == "__main__":
        main()
    
    6
  • #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    
    def main():
        terminal_menu = TerminalMenu(
            ["dog", "cat", "mouse", "squirrel"],
            multi_select=True,
            show_multi_select_hint=True,
        )
        menu_entry_indices = terminal_menu.show()
        print(menu_entry_indices)
        print(terminal_menu.chosen_menu_entries)
    
    
    if __name__ == "__main__":
        main()
    
    7
  • #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    
    def main():
        terminal_menu = TerminalMenu(
            ["dog", "cat", "mouse", "squirrel"],
            multi_select=True,
            show_multi_select_hint=True,
        )
        menu_entry_indices = terminal_menu.show()
        print(menu_entry_indices)
        print(terminal_menu.chosen_menu_entries)
    
    
    if __name__ == "__main__":
        main()
    
    8
  • #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    
    def main():
        terminal_menu = TerminalMenu(
            ["dog", "cat", "mouse", "squirrel"],
            multi_select=True,
            show_multi_select_hint=True,
        )
        menu_entry_indices = terminal_menu.show()
        print(menu_entry_indices)
        print(terminal_menu.chosen_menu_entries)
    
    
    if __name__ == "__main__":
        main()
    
    9
  • #!/usr/bin/env python3
    
    import os
    from simple_term_menu import TerminalMenu
    
    
    def list_files(directory="."):
        return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))
    
    
    def main():
        terminal_menu = TerminalMenu(list_files(), preview_command="bat --color=always {}", preview_size=0.75)
        menu_entry_index = terminal_menu.show()
    
    
    if __name__ == "__main__":
        main()
    
    0
  • #!/usr/bin/env python3
    
    import os
    from simple_term_menu import TerminalMenu
    
    
    def list_files(directory="."):
        return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))
    
    
    def main():
        terminal_menu = TerminalMenu(list_files(), preview_command="bat --color=always {}", preview_size=0.75)
        menu_entry_index = terminal_menu.show()
    
    
    if __name__ == "__main__":
        main()
    
    1
  • #!/usr/bin/env python3
    
    import os
    from simple_term_menu import TerminalMenu
    
    
    def list_files(directory="."):
        return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))
    
    
    def main():
        terminal_menu = TerminalMenu(list_files(), preview_command="bat --color=always {}", preview_size=0.75)
        menu_entry_index = terminal_menu.show()
    
    
    if __name__ == "__main__":
        main()
    
    2

Bạn có thể thay đổi các kiểu sau:

  • #!/usr/bin/env python3
    
    import os
    from simple_term_menu import TerminalMenu
    
    
    def list_files(directory="."):
        return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))
    
    
    def main():
        terminal_menu = TerminalMenu(list_files(), preview_command="bat --color=always {}", preview_size=0.75)
        menu_entry_index = terminal_menu.show()
    
    
    if __name__ == "__main__":
        main()
    
    3: Phong cách của con trỏ được hiển thị. Kiểu mặc định là
    #!/usr/bin/env python3
    
    import os
    from simple_term_menu import TerminalMenu
    
    
    def list_files(directory="."):
        return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))
    
    
    def main():
        terminal_menu = TerminalMenu(list_files(), preview_command="bat --color=always {}", preview_size=0.75)
        menu_entry_index = terminal_menu.show()
    
    
    if __name__ == "__main__":
        main()
    
    4.

  • #!/usr/bin/env python3
    
    import os
    from simple_term_menu import TerminalMenu
    
    
    def list_files(directory="."):
        return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))
    
    
    def main():
        terminal_menu = TerminalMenu(list_files(), preview_command="bat --color=always {}", preview_size=0.75)
        menu_entry_index = terminal_menu.show()
    
    
    if __name__ == "__main__":
        main()
    
    5: Kiểu của mục nhập menu đã chọn. Kiểu mặc định là
    #!/usr/bin/env python3
    
    import os
    from simple_term_menu import TerminalMenu
    
    
    def list_files(directory="."):
        return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))
    
    
    def main():
        terminal_menu = TerminalMenu(list_files(), preview_command="bat --color=always {}", preview_size=0.75)
        menu_entry_index = terminal_menu.show()
    
    
    if __name__ == "__main__":
        main()
    
    6.

  • #!/usr/bin/env python3
    
    import os
    from simple_term_menu import TerminalMenu
    
    
    def list_files(directory="."):
        return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))
    
    
    def main():
        terminal_menu = TerminalMenu(list_files(), preview_command="bat --color=always {}", preview_size=0.75)
        menu_entry_index = terminal_menu.show()
    
    
    if __name__ == "__main__":
        main()
    
    7: Phong cách của chuỗi tìm kiếm phù hợp. Kiểu mặc định là
    #!/usr/bin/env python3
    
    import os
    from simple_term_menu import TerminalMenu
    
    
    def list_files(directory="."):
        return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))
    
    
    def main():
        terminal_menu = TerminalMenu(list_files(), preview_command="bat --color=always {}", preview_size=0.75)
        menu_entry_index = terminal_menu.show()
    
    
    if __name__ == "__main__":
        main()
    
    8.

  • #!/usr/bin/env python3
    
    import os
    from simple_term_menu import TerminalMenu
    
    
    def list_files(directory="."):
        return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))
    
    
    def main():
        terminal_menu = TerminalMenu(list_files(), preview_command="bat --color=always {}", preview_size=0.75)
        menu_entry_index = terminal_menu.show()
    
    
    if __name__ == "__main__":
        main()
    
    9: Phong cách của phím tắt. Kiểu mặc định là
    #!/usr/bin/env python3
    
    import os
    from pygments import formatters, highlight, lexers
    from pygments.util import ClassNotFound
    from simple_term_menu import TerminalMenu
    
    
    def highlight_file(filepath):
        with open(filepath, "r") as f:
            file_content = f.read()
        try:
            lexer = lexers.get_lexer_for_filename(filepath, stripnl=False, stripall=False)
        except ClassNotFound:
            lexer = lexers.get_lexer_by_name("text", stripnl=False, stripall=False)
        formatter = formatters.TerminalFormatter(bg="dark")  # dark or light
        highlighted_file_content = highlight(file_content, lexer, formatter)
        return highlighted_file_content
    
    
    def list_files(directory="."):
        return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))
    
    
    def main():
        terminal_menu = TerminalMenu(list_files(), preview_command=highlight_file, preview_size=0.75)
        menu_entry_index = terminal_menu.show()
    
    
    if __name__ == "__main__":
        main()
    
    0.

  • #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    def main():
        options = ["entry 1", "entry 2", "entry 3"]
        terminal_menu = TerminalMenu(options)
        menu_entry_index = terminal_menu.show()
        print(f"You have selected {options[menu_entry_index]}!")
    
    if __name__ == "__main__":
        main()
    
    3: Phong cách của giá đỡ kèm theo các phím tắt. Kiểu mặc định là
    #!/usr/bin/env python3
    
    import os
    from pygments import formatters, highlight, lexers
    from pygments.util import ClassNotFound
    from simple_term_menu import TerminalMenu
    
    
    def highlight_file(filepath):
        with open(filepath, "r") as f:
            file_content = f.read()
        try:
            lexer = lexers.get_lexer_for_filename(filepath, stripnl=False, stripall=False)
        except ClassNotFound:
            lexer = lexers.get_lexer_by_name("text", stripnl=False, stripall=False)
        formatter = formatters.TerminalFormatter(bg="dark")  # dark or light
        highlighted_file_content = highlight(file_content, lexer, formatter)
        return highlighted_file_content
    
    
    def list_files(directory="."):
        return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))
    
    
    def main():
        terminal_menu = TerminalMenu(list_files(), preview_command=highlight_file, preview_size=0.75)
        menu_entry_index = terminal_menu.show()
    
    
    if __name__ == "__main__":
        main()
    
    2.

  • #!/usr/bin/env python3
    
    import os
    from pygments import formatters, highlight, lexers
    from pygments.util import ClassNotFound
    from simple_term_menu import TerminalMenu
    
    
    def highlight_file(filepath):
        with open(filepath, "r") as f:
            file_content = f.read()
        try:
            lexer = lexers.get_lexer_for_filename(filepath, stripnl=False, stripall=False)
        except ClassNotFound:
            lexer = lexers.get_lexer_by_name("text", stripnl=False, stripall=False)
        formatter = formatters.TerminalFormatter(bg="dark")  # dark or light
        highlighted_file_content = highlight(file_content, lexer, formatter)
        return highlighted_file_content
    
    
    def list_files(directory="."):
        return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))
    
    
    def main():
        terminal_menu = TerminalMenu(list_files(), preview_command=highlight_file, preview_size=0.75)
        menu_entry_index = terminal_menu.show()
    
    
    if __name__ == "__main__":
        main()
    
    3: Kiểu của thanh trạng thái bên dưới menu. Kiểu mặc định là
    #!/usr/bin/env python3
    
    import os
    from pygments import formatters, highlight, lexers
    from pygments.util import ClassNotFound
    from simple_term_menu import TerminalMenu
    
    
    def highlight_file(filepath):
        with open(filepath, "r") as f:
            file_content = f.read()
        try:
            lexer = lexers.get_lexer_for_filename(filepath, stripnl=False, stripall=False)
        except ClassNotFound:
            lexer = lexers.get_lexer_by_name("text", stripnl=False, stripall=False)
        formatter = formatters.TerminalFormatter(bg="dark")  # dark or light
        highlighted_file_content = highlight(file_content, lexer, formatter)
        return highlighted_file_content
    
    
    def list_files(directory="."):
        return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))
    
    
    def main():
        terminal_menu = TerminalMenu(list_files(), preview_command=highlight_file, preview_size=0.75)
        menu_entry_index = terminal_menu.show()
    
    
    if __name__ == "__main__":
        main()
    
    4.

  • #!/usr/bin/env python3
    
    import os
    from pygments import formatters, highlight, lexers
    from pygments.util import ClassNotFound
    from simple_term_menu import TerminalMenu
    
    
    def highlight_file(filepath):
        with open(filepath, "r") as f:
            file_content = f.read()
        try:
            lexer = lexers.get_lexer_for_filename(filepath, stripnl=False, stripall=False)
        except ClassNotFound:
            lexer = lexers.get_lexer_by_name("text", stripnl=False, stripall=False)
        formatter = formatters.TerminalFormatter(bg="dark")  # dark or light
        highlighted_file_content = highlight(file_content, lexer, formatter)
        return highlighted_file_content
    
    
    def list_files(directory="."):
        return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))
    
    
    def main():
        terminal_menu = TerminalMenu(list_files(), preview_command=highlight_file, preview_size=0.75)
        menu_entry_index = terminal_menu.show()
    
    
    if __name__ == "__main__":
        main()
    
    5: Phong cách của con trỏ ghim một mục được chọn trong một lựa chọn đa hướng. Kiểu mặc định là
    #!/usr/bin/env python3
    
    import os
    from pygments import formatters, highlight, lexers
    from pygments.util import ClassNotFound
    from simple_term_menu import TerminalMenu
    
    
    def highlight_file(filepath):
        with open(filepath, "r") as f:
            file_content = f.read()
        try:
            lexer = lexers.get_lexer_for_filename(filepath, stripnl=False, stripall=False)
        except ClassNotFound:
            lexer = lexers.get_lexer_by_name("text", stripnl=False, stripall=False)
        formatter = formatters.TerminalFormatter(bg="dark")  # dark or light
        highlighted_file_content = highlight(file_content, lexer, formatter)
        return highlighted_file_content
    
    
    def list_files(directory="."):
        return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))
    
    
    def main():
        terminal_menu = TerminalMenu(list_files(), preview_command=highlight_file, preview_size=0.75)
        menu_entry_index = terminal_menu.show()
    
    
    if __name__ == "__main__":
        main()
    
    6. Phong cách này không bao gồm dấu ngoặc (xem bên dưới).

  • #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    def main():
        options = ["entry 1", "entry 2", "entry 3"]
        terminal_menu = TerminalMenu(options)
        menu_entry_index = terminal_menu.show()
        print(f"You have selected {options[menu_entry_index]}!")
    
    if __name__ == "__main__":
        main()
    
    4: Phong cách của dấu ngoặc trong
    #!/usr/bin/env python3
    
    import os
    from pygments import formatters, highlight, lexers
    from pygments.util import ClassNotFound
    from simple_term_menu import TerminalMenu
    
    
    def highlight_file(filepath):
        with open(filepath, "r") as f:
            file_content = f.read()
        try:
            lexer = lexers.get_lexer_for_filename(filepath, stripnl=False, stripall=False)
        except ClassNotFound:
            lexer = lexers.get_lexer_by_name("text", stripnl=False, stripall=False)
        formatter = formatters.TerminalFormatter(bg="dark")  # dark or light
        highlighted_file_content = highlight(file_content, lexer, formatter)
        return highlighted_file_content
    
    
    def list_files(directory="."):
        return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))
    
    
    def main():
        terminal_menu = TerminalMenu(list_files(), preview_command=highlight_file, preview_size=0.75)
        menu_entry_index = terminal_menu.show()
    
    
    if __name__ == "__main__":
        main()
    
    8 (
    #!/usr/bin/env python3
    
    import os
    from pygments import formatters, highlight, lexers
    from pygments.util import ClassNotFound
    from simple_term_menu import TerminalMenu
    
    
    def highlight_file(filepath):
        with open(filepath, "r") as f:
            file_content = f.read()
        try:
            lexer = lexers.get_lexer_for_filename(filepath, stripnl=False, stripall=False)
        except ClassNotFound:
            lexer = lexers.get_lexer_by_name("text", stripnl=False, stripall=False)
        formatter = formatters.TerminalFormatter(bg="dark")  # dark or light
        highlighted_file_content = highlight(file_content, lexer, formatter)
        return highlighted_file_content
    
    
    def list_files(directory="."):
        return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))
    
    
    def main():
        terminal_menu = TerminalMenu(list_files(), preview_command=highlight_file, preview_size=0.75)
        menu_entry_index = terminal_menu.show()
    
    
    if __name__ == "__main__":
        main()
    
    9). Kiểu mặc định là
    #!/usr/bin/env python3
    
    import os
    from pygments import formatters, highlight, lexers
    from pygments.util import ClassNotFound
    from simple_term_menu import TerminalMenu
    
    
    def highlight_file(filepath):
        with open(filepath, "r") as f:
            file_content = f.read()
        try:
            lexer = lexers.get_lexer_for_filename(filepath, stripnl=False, stripall=False)
        except ClassNotFound:
            lexer = lexers.get_lexer_by_name("text", stripnl=False, stripall=False)
        formatter = formatters.TerminalFormatter(bg="dark")  # dark or light
        highlighted_file_content = highlight(file_content, lexer, formatter)
        return highlighted_file_content
    
    
    def list_files(directory="."):
        return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))
    
    
    def main():
        terminal_menu = TerminalMenu(list_files(), preview_command=highlight_file, preview_size=0.75)
        menu_entry_index = terminal_menu.show()
    
    
    if __name__ == "__main__":
        main()
    
    2.

Bằng cách đặt

#!/usr/bin/env python3

import subprocess
from simple_term_menu import TerminalMenu


def list_tmux_sessions():
    tmux_command_output = subprocess.check_output(
        ["tmux", "list-sessions", "-F#{session_id}:#{session_name}"], universal_newlines=True
    )
    tmux_sessions = []
    for line in tmux_command_output.split("\n"):
        line = line.strip()
        if not line:
            continue
        session_id, session_name = tuple(line.split(":"))
        tmux_sessions.append((session_name, session_id))
    return tmux_sessions


def main():
    terminal_menu = TerminalMenu(
        ("|".join(session) for session in list_tmux_sessions()),
        preview_command="tmux capture-pane -e -p -t {}",
        preview_size=0.75,
    )
    menu_entry_index = terminal_menu.show()


if __name__ == "__main__":
    main()
1, bạn có thể xác định một con trỏ khác hoặc vô hiệu hóa nó (
#!/usr/bin/env python3

import os
from simple_term_menu import TerminalMenu


def main():
    fruits = ["[a] apple", "[b] banana", "[o] orange"]
    terminal_menu = TerminalMenu(fruits, title="Fruits")
    menu_entry_index = terminal_menu.show()


if __name__ == "__main__":
    main()
5). Con trỏ mặc định là
#!/usr/bin/env python3

import subprocess
from simple_term_menu import TerminalMenu


def list_tmux_sessions():
    tmux_command_output = subprocess.check_output(
        ["tmux", "list-sessions", "-F#{session_id}:#{session_name}"], universal_newlines=True
    )
    tmux_sessions = []
    for line in tmux_command_output.split("\n"):
        line = line.strip()
        if not line:
            continue
        session_id, session_name = tuple(line.split(":"))
        tmux_sessions.append((session_name, session_id))
    return tmux_sessions


def main():
    terminal_menu = TerminalMenu(
        ("|".join(session) for session in list_tmux_sessions()),
        preview_command="tmux capture-pane -e -p -t {}",
        preview_size=0.75,
    )
    menu_entry_index = terminal_menu.show()


if __name__ == "__main__":
    main()
3. Tham số
#!/usr/bin/env python3

import os
from pygments import formatters, highlight, lexers
from pygments.util import ClassNotFound
from simple_term_menu import TerminalMenu


def highlight_file(filepath):
    with open(filepath, "r") as f:
        file_content = f.read()
    try:
        lexer = lexers.get_lexer_for_filename(filepath, stripnl=False, stripall=False)
    except ClassNotFound:
        lexer = lexers.get_lexer_by_name("text", stripnl=False, stripall=False)
    formatter = formatters.TerminalFormatter(bg="dark")  # dark or light
    highlighted_file_content = highlight(file_content, lexer, formatter)
    return highlighted_file_content


def list_files(directory="."):
    return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))


def main():
    terminal_menu = TerminalMenu(list_files(), preview_command=highlight_file, preview_size=0.75)
    menu_entry_index = terminal_menu.show()


if __name__ == "__main__":
    main()
8 tùy chỉnh con trỏ đa chọn (mặc định là
#!/usr/bin/env python3

import subprocess
from simple_term_menu import TerminalMenu


def list_tmux_sessions():
    tmux_command_output = subprocess.check_output(
        ["tmux", "list-sessions", "-F#{session_id}:#{session_name}"], universal_newlines=True
    )
    tmux_sessions = []
    for line in tmux_command_output.split("\n"):
        line = line.strip()
        if not line:
            continue
        session_id, session_name = tuple(line.split(":"))
        tmux_sessions.append((session_name, session_id))
    return tmux_sessions


def main():
    terminal_menu = TerminalMenu(
        ("|".join(session) for session in list_tmux_sessions()),
        preview_command="tmux capture-pane -e -p -t {}",
        preview_size=0.75,
    )
    menu_entry_index = terminal_menu.show()


if __name__ == "__main__":
    main()
5).

Đang tìm kiếm

#!/usr/bin/env python3

import subprocess
from simple_term_menu import TerminalMenu


def list_tmux_sessions():
    tmux_command_output = subprocess.check_output(
        ["tmux", "list-sessions", "-F#{session_id}:#{session_name}"], universal_newlines=True
    )
    tmux_sessions = []
    for line in tmux_command_output.split("\n"):
        line = line.strip()
        if not line:
            continue
        session_id, session_name = tuple(line.split(":"))
        tmux_sessions.append((session_name, session_id))
    return tmux_sessions


def main():
    terminal_menu = TerminalMenu(
        ("|".join(session) for session in list_tmux_sessions()),
        preview_command="tmux capture-pane -e -p -t {}",
        preview_size=0.75,
    )
    menu_entry_index = terminal_menu.show()


if __name__ == "__main__":
    main()
6 có tính năng tìm kiếm tích hợp để lọc các mục menu hiển thị. Khóa mặc định để kích hoạt chế độ tìm kiếm là
#!/usr/bin/env python3

import subprocess
from simple_term_menu import TerminalMenu


def list_tmux_sessions():
    tmux_command_output = subprocess.check_output(
        ["tmux", "list-sessions", "-F#{session_id}:#{session_name}"], universal_newlines=True
    )
    tmux_sessions = []
    for line in tmux_command_output.split("\n"):
        line = line.strip()
        if not line:
            continue
        session_id, session_name = tuple(line.split(":"))
        tmux_sessions.append((session_name, session_id))
    return tmux_sessions


def main():
    terminal_menu = TerminalMenu(
        ("|".join(session) for session in list_tmux_sessions()),
        preview_command="tmux capture-pane -e -p -t {}",
        preview_size=0.75,
    )
    menu_entry_index = terminal_menu.show()


if __name__ == "__main__":
    main()
7 (như trong VIM, ít hơn và các chương trình thiết bị đầu cuối khác). Nếu bạn thích khóa tìm kiếm khác, hãy chuyển tham số
#!/usr/bin/env python3

import subprocess
from simple_term_menu import TerminalMenu


def list_tmux_sessions():
    tmux_command_output = subprocess.check_output(
        ["tmux", "list-sessions", "-F#{session_id}:#{session_name}"], universal_newlines=True
    )
    tmux_sessions = []
    for line in tmux_command_output.split("\n"):
        line = line.strip()
        if not line:
            continue
        session_id, session_name = tuple(line.split(":"))
        tmux_sessions.append((session_name, session_id))
    return tmux_sessions


def main():
    terminal_menu = TerminalMenu(
        ("|".join(session) for session in list_tmux_sessions()),
        preview_command="tmux capture-pane -e -p -t {}",
        preview_size=0.75,
    )
    menu_entry_index = terminal_menu.show()


if __name__ == "__main__":
    main()
8 cho hàm tạo
yay -S python-simple-term-menu
5.
#!/usr/bin/env python3

import os
from simple_term_menu import TerminalMenu


def main():
    fruits = ["[a] apple", "[b] banana", "[o] orange"]
    terminal_menu = TerminalMenu(fruits, title="Fruits")
    menu_entry_index = terminal_menu.show()


if __name__ == "__main__":
    main()
5 có thể được truyền để kích hoạt tìm kiếm trên mỗi khóa chữ cái. Rõ ràng,
#!/usr/bin/env python3

import os
from simple_term_menu import TerminalMenu


def main():
    fruits = ["[a] apple", "[b] banana", "[o] orange"]
    terminal_menu = TerminalMenu(fruits, title="Fruits")
    menu_entry_index = terminal_menu.show()


if __name__ == "__main__":
    main()
0 và
#!/usr/bin/env python3

import os
from simple_term_menu import TerminalMenu


def main():
    fruits = ["[a] apple", "[b] banana", "[o] orange"]
    terminal_menu = TerminalMenu(fruits, title="Fruits")
    menu_entry_index = terminal_menu.show()


if __name__ == "__main__":
    main()
1 không thể được sử dụng cho các chuyển động con trỏ trong chế độ đó. Sử dụng
from simple_term_menu import TerminalMenu

def main():                                                         # Or use `None` instead of `""`:
    options = ["entry 1", "entry 2", "", "add", "edit"]             # ["entry 1", "entry 2", None, "add", "edit"]
    terminal_menu = TerminalMenu(options, skip_empty_entries=True)  # TerminalMenu(options)
    menu_entry_index = terminal_menu.show()
    print(f"You have selected {options[menu_entry_index]}!")

if __name__ == "__main__":
    main()
3 và
from simple_term_menu import TerminalMenu

def main():                                                         # Or use `None` instead of `""`:
    options = ["entry 1", "entry 2", "", "add", "edit"]             # ["entry 1", "entry 2", None, "add", "edit"]
    terminal_menu = TerminalMenu(options, skip_empty_entries=True)  # TerminalMenu(options)
    menu_entry_index = terminal_menu.show()
    print(f"You have selected {options[menu_entry_index]}!")

if __name__ == "__main__":
    main()
4 thay thế.

Chế độ tìm kiếm hỗ trợ cú pháp Python Regex. Truy cập tài liệu Python Re để biết thêm chi tiết.

Các phần chuỗi của các mục menu khớp với mẫu tìm kiếm đã cho được tô sáng. Sử dụng tham số

#!/usr/bin/env python3

import os
from simple_term_menu import TerminalMenu


def list_files(directory="."):
    return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))


def main():
    terminal_menu = TerminalMenu(list_files(), preview_command="bat --color=always {}", preview_size=0.75)
    menu_entry_index = terminal_menu.show()


if __name__ == "__main__":
    main()
7 để điều chỉnh kiểu nổi bật theo ý thích của bạn.

Theo mặc định, tìm kiếm là trường hợp không nhạy cảm. Đặt

from simple_term_menu import TerminalMenu

def main():                                                         # Or use `None` instead of `""`:
    options = ["entry 1", "entry 2", "", "add", "edit"]             # ["entry 1", "entry 2", None, "add", "edit"]
    terminal_menu = TerminalMenu(options, skip_empty_entries=True)  # TerminalMenu(options)
    menu_entry_index = terminal_menu.show()
    print(f"You have selected {options[menu_entry_index]}!")

if __name__ == "__main__":
    main()
6 thành
from simple_term_menu import TerminalMenu

def main():                                                         # Or use `None` instead of `""`:
    options = ["entry 1", "entry 2", "", "add", "edit"]             # ["entry 1", "entry 2", None, "add", "edit"]
    terminal_menu = TerminalMenu(options, skip_empty_entries=True)  # TerminalMenu(options)
    menu_entry_index = terminal_menu.show()
    print(f"You have selected {options[menu_entry_index]}!")

if __name__ == "__main__":
    main()
7 Nếu bạn thích dòng tìm kiếm nhạy cảm trường hợp.

Chuyển

from simple_term_menu import TerminalMenu

def main():                                                         # Or use `None` instead of `""`:
    options = ["entry 1", "entry 2", "", "add", "edit"]             # ["entry 1", "entry 2", None, "add", "edit"]
    terminal_menu = TerminalMenu(options, skip_empty_entries=True)  # TerminalMenu(options)
    menu_entry_index = terminal_menu.show()
    print(f"You have selected {options[menu_entry_index]}!")

if __name__ == "__main__":
    main()
8 cho hàm tạo
yay -S python-simple-term-menu
5 để kích hoạt gợi ý tìm kiếm trong dòng tìm kiếm (như
yay -S python-simple-term-menu
00).

Phím tắt

Bạn có thể xác định các phím tắt cho các mục menu đã chọn bằng cách chi tiêu một ký tự duy nhất được đặt trong ngoặc vuông (như

yay -S python-simple-term-menu
01). Vượt qua
#!/usr/bin/env python3

import os
from simple_term_menu import TerminalMenu


def list_files(directory="."):
    return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))


def main():
    terminal_menu = TerminalMenu(list_files(), preview_command="bat --color=always {}", preview_size=0.75)
    menu_entry_index = terminal_menu.show()


if __name__ == "__main__":
    main()
9 và/hoặc
#!/usr/bin/env python3

from simple_term_menu import TerminalMenu

def main():
    options = ["entry 1", "entry 2", "entry 3"]
    terminal_menu = TerminalMenu(options)
    menu_entry_index = terminal_menu.show()
    print(f"You have selected {options[menu_entry_index]}!")

if __name__ == "__main__":
    main()
3 cho hàm tạo
yay -S python-simple-term-menu
5 để thay đổi kiểu nổi bật mặc định của các phím tắt.

Theo mặc định, phương thức

#!/usr/bin/env python3

from simple_term_menu import TerminalMenu

def main():
    options = ["entry 1", "entry 2", "entry 3"]
    terminal_menu = TerminalMenu(options)
    menu_entry_index = terminal_menu.show()
    print(f"You have selected {options[menu_entry_index]}!")

if __name__ == "__main__":
    main()
9 trả về khi nhấn phím tắt. Nếu bạn chỉ muốn lựa chọn để nhảy mục tiêu phím tắt, hãy chuyển
yay -S python-simple-term-menu
06 cho hàm tạo
yay -S python-simple-term-menu
5.

Nếu bạn đã cấu hình tìm kiếm sẽ được kích hoạt trên mỗi khóa chữ cái, tính năng phím tắt sẽ bị tắt.

Chuyển

yay -S python-simple-term-menu
08 cho hàm tạo
yay -S python-simple-term-menu
5 để hiển thị các gợi ý phím tắt trong thanh trạng thái (hữu ích cho các menu rất dài cần cuộn). Ngoài ra, hãy vượt qua
yay -S python-simple-term-menu
10 Nếu bạn thích gợi ý tắt trong tiêu đề menu.

Ví dụ phím tắt

Tạo một menu của một số loại trái cây và sử dụng chữ cái đầu tiên làm phím tắt:

#!/usr/bin/env python3

import os
from simple_term_menu import TerminalMenu


def main():
    fruits = ["[a] apple", "[b] banana", "[o] orange"]
    terminal_menu = TerminalMenu(fruits, title="Fruits")
    menu_entry_index = terminal_menu.show()


if __name__ == "__main__":
    main()

Các phím chấp nhận tùy chỉnh

Khóa mặc định để chấp nhận một mục menu là

yay -S python-simple-term-menu
11. Vượt qua tham số
yay -S python-simple-term-menu
12 với một bộ khóa (dưới dạng chuỗi) cho hàm tạo
yay -S python-simple-term-menu
5 để sử dụng một bộ khóa chấp nhận khác. Các khóa chấp nhận tùy chỉnh có thể là các chữ cái ASCII đơn giản hoặc các chữ cái ASCII có khóa sửa đổi (Prepend
yay -S python-simple-term-menu
14 hoặc
yay -S python-simple-term-menu
15 cho chữ cái ASCII). Sử dụng thuộc tính
yay -S python-simple-term-menu
16 của phiên bản
yay -S python-simple-term-menu
5 để truy vấn chấp nhận khóa được người dùng nhấn.

Xin lưu ý rằng không phải tất cả các kết hợp của các khóa sửa đổi và ASCII sẽ hoạt động tùy thuộc vào trình giả lập thiết bị đầu cuối và giao diện người dùng đồ họa của bạn. Ngoài ra, một số kết hợp tạo ra các khóa hiện có khác (ví dụ:

yay -S python-simple-term-menu
18 là
yay -S python-simple-term-menu
11 / trả lại vận chuyển).

Ví dụ khóa chấp nhận tùy chỉnh

#!/usr/bin/env python3

from simple_term_menu import TerminalMenu


def main():
    terminal_menu = TerminalMenu(["entry 1", "entry 2", "entry 3"], accept_keys=("enter", "alt-d", "ctrl-i"))
    menu_entry_index = terminal_menu.show()
    print(terminal_menu.chosen_accept_key)


if __name__ == "__main__":
    main()

Multi-select

Chuyển

yay -S python-simple-term-menu
20 cho hàm tạo
yay -S python-simple-term-menu
5 để kích hoạt chế độ đa chọn. Nhấn
#!/usr/bin/env python3

from simple_term_menu import TerminalMenu

def main():
    options = ["entry 1", "entry 2", "entry 3"]
    terminal_menu = TerminalMenu(options)
    menu_entry_index = terminal_menu.show()
    print(f"You have selected {options[menu_entry_index]}!")

if __name__ == "__main__":
    main()
0 hoặc
#!/usr/bin/env python3

from simple_term_menu import TerminalMenu

def main():
    options = ["entry 1", "entry 2", "entry 3"]
    terminal_menu = TerminalMenu(options)
    menu_entry_index = terminal_menu.show()
    print(f"You have selected {options[menu_entry_index]}!")

if __name__ == "__main__":
    main()
1 trên một mục menu tùy ý để thêm nó vào lựa chọn của bạn. Nhấn
yay -S python-simple-term-menu
11 (hoặc bất kỳ
yay -S python-simple-term-menu
25 được định cấu hình nào khác) để thêm mục nhập hiện được chọn làm mục cuối cùng vào lựa chọn và trả về phương thức
#!/usr/bin/env python3

from simple_term_menu import TerminalMenu

def main():
    options = ["entry 1", "entry 2", "entry 3"]
    terminal_menu = TerminalMenu(options)
    menu_entry_index = terminal_menu.show()
    print(f"You have selected {options[menu_entry_index]}!")

if __name__ == "__main__":
    main()
9 như bình thường. Trong chế độ đa chọn, phương thức
#!/usr/bin/env python3

from simple_term_menu import TerminalMenu

def main():
    options = ["entry 1", "entry 2", "entry 3"]
    terminal_menu = TerminalMenu(options)
    menu_entry_index = terminal_menu.show()
    print(f"You have selected {options[menu_entry_index]}!")

if __name__ == "__main__":
    main()
9 trả về một bộ xử lý được sắp xếp của tất cả các chỉ số menu đã chọn của bạn thay vì một int. Sử dụng thuộc tính
yay -S python-simple-term-menu
28 để có được một bộ của các chuỗi nhập menu thay thế. Bằng cách cài đặt
yay -S python-simple-term-menu
9, bạn có thể xác định một bộ khóa khác để chuyển đổi một mục đã chọn. Bằng cách vượt qua
yay -S python-simple-term-menu
30 Một gợi ý chế độ đa chọn được hiển thị trong thanh trạng thái. Nếu bạn không muốn
yay -S python-simple-term-menu
25 cũng chọn mục được tô sáng cuối cùng, bạn có thể vượt qua
yay -S python-simple-term-menu
32. Nếu không có mục menu nào được chọn rõ ràng, mục menu được tô sáng cuối cùng vẫn sẽ được thêm vào lựa chọn trừ khi bạn cũng vượt qua
yay -S python-simple-term-menu
33.

Một danh sách tùy chọn (hoặc bất kỳ đối tượng có thể lặp lại nào khác)

yay -S python-simple-term-menu
34 cũng có thể được truyền để có các mục đã được chọn khi menu được hiển thị. Danh sách này có thể bao gồm các số nguyên đại diện cho các chỉ mục của danh sách
yay -S python-simple-term-menu
35 hoặc các chuỗi phù hợp với các yếu tố của
yay -S python-simple-term-menu
35. Số nguyên và chuỗi có thể được trộn lẫn.

Ví dụ đa chọn

#!/usr/bin/env python3

from simple_term_menu import TerminalMenu


def main():
    terminal_menu = TerminalMenu(
        ["dog", "cat", "mouse", "squirrel"],
        multi_select=True,
        show_multi_select_hint=True,
    )
    menu_entry_indices = terminal_menu.show()
    print(menu_entry_indices)
    print(terminal_menu.chosen_menu_entries)


if __name__ == "__main__":
    main()

Xem trước cửa sổ

yay -S python-simple-term-menu
4 có thể hiển thị bản xem trước cho mỗi lần nhập menu. Chuyển
yay -S python-simple-term-menu
38 cho hàm tạo
yay -S python-simple-term-menu
5 để kích hoạt tính năng tùy chọn này.
yay -S python-simple-term-menu
38 hoặc lấy một chuỗi lệnh sẽ được thực thi dưới dạng quy trình con hoặc một python có thể gọi được chuyển đổi một chuỗi mục nhập menu đã cho thành đầu ra xem trước. Nếu một chuỗi lệnh được đưa ra, mẫu
yay -S python-simple-term-menu
41 được thay thế bằng chuỗi mục nhập menu hiện tại. Nếu một mục menu có một thành phần dữ liệu bổ sung (được phân tách bằng
yay -S python-simple-term-menu
42), thay vào đó, nó sẽ được chuyển sang lệnh xem trước.
yay -S python-simple-term-menu
43 có thể được sử dụng cho một
yay -S python-simple-term-menu
42 theo nghĩa đen. Nếu bạn chỉ cần nối thêm một
yay -S python-simple-term-menu
42 (không có thành phần dữ liệu), cửa sổ xem trước sẽ bị tắt cho mục này.

Đối số từ khóa bổ sung

yay -S python-simple-term-menu
46 có thể được sử dụng để kiểm soát chiều cao của cửa sổ xem trước. Nó được đưa ra dưới dạng một phần của chiều cao thiết bị đầu cuối hoàn chỉnh (mặc định:
yay -S python-simple-term-menu
47). Chiều rộng không thể được đặt, nó luôn luôn là chiều rộng hoàn chỉnh của cửa sổ đầu cuối.

Vượt qua

yay -S python-simple-term-menu
48 với một chuỗi bạn chọn để tùy chỉnh tiêu đề cửa sổ xem trước (mặc định:
yay -S python-simple-term-menu
49) hoặc
yay -S python-simple-term-menu
50 để hủy kích hoạt đường viền xung quanh cửa sổ xem trước (cũng hủy kích hoạt chuỗi tiêu đề).

Các lệnh xem trước được phép tạo mã màu ANSI Escape.

Xem trước ví dụ

  • Tạo một menu cho tất cả các tệp trong thư mục hiện tại và xem trước nội dung của chúng bằng lệnh

    yay -S python-simple-term-menu
    
    51:

    #!/usr/bin/env python3
    
    import os
    from simple_term_menu import TerminalMenu
    
    
    def list_files(directory="."):
        return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))
    
    
    def main():
        terminal_menu = TerminalMenu(list_files(), preview_command="bat --color=always {}", preview_size=0.75)
        menu_entry_index = terminal_menu.show()
    
    
    if __name__ == "__main__":
        main()
    

  • Một ví dụ xem trước tệp khác bằng API PYGMENTS:

    #!/usr/bin/env python3
    
    import os
    from pygments import formatters, highlight, lexers
    from pygments.util import ClassNotFound
    from simple_term_menu import TerminalMenu
    
    
    def highlight_file(filepath):
        with open(filepath, "r") as f:
            file_content = f.read()
        try:
            lexer = lexers.get_lexer_for_filename(filepath, stripnl=False, stripall=False)
        except ClassNotFound:
            lexer = lexers.get_lexer_by_name("text", stripnl=False, stripall=False)
        formatter = formatters.TerminalFormatter(bg="dark")  # dark or light
        highlighted_file_content = highlight(file_content, lexer, formatter)
        return highlighted_file_content
    
    
    def list_files(directory="."):
        return (file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file)))
    
    
    def main():
        terminal_menu = TerminalMenu(list_files(), preview_command=highlight_file, preview_size=0.75)
        menu_entry_index = terminal_menu.show()
    
    
    if __name__ == "__main__":
        main()
    

  • Xem trước khung hoạt động của mỗi phiên TMUX đang chạy (ID phiên được nối vào các mục menu với dấu phân cách

    yay -S python-simple-term-menu
    
    42):

    #!/usr/bin/env python3
    
    import subprocess
    from simple_term_menu import TerminalMenu
    
    
    def list_tmux_sessions():
        tmux_command_output = subprocess.check_output(
            ["tmux", "list-sessions", "-F#{session_id}:#{session_name}"], universal_newlines=True
        )
        tmux_sessions = []
        for line in tmux_command_output.split("\n"):
            line = line.strip()
            if not line:
                continue
            session_id, session_name = tuple(line.split(":"))
            tmux_sessions.append((session_name, session_id))
        return tmux_sessions
    
    
    def main():
        terminal_menu = TerminalMenu(
            ("|".join(session) for session in list_tmux_sessions()),
            preview_command="tmux capture-pane -e -p -t {}",
            preview_size=0.75,
        )
        menu_entry_index = terminal_menu.show()
    
    
    if __name__ == "__main__":
        main()
    

Bỏ qua các mục trống

Sử dụng tham số Constructor

yay -S python-simple-term-menu
53 hoặc cờ
yay -S python-simple-term-menu
54 để diễn giải một giá trị chuỗi trống trong các mục menu dưới dạng mục menu trống (sẽ được bỏ qua khi lặp lại trên các mục). Giá trị
#!/usr/bin/env python3

import os
from simple_term_menu import TerminalMenu


def main():
    fruits = ["[a] apple", "[b] banana", "[o] orange"]
    terminal_menu = TerminalMenu(fruits, title="Fruits")
    menu_entry_index = terminal_menu.show()


if __name__ == "__main__":
    main()
5 luôn được coi là một mục menu trống độc lập với tham số
yay -S python-simple-term-menu
53.

from simple_term_menu import TerminalMenu

def main():                                                         # Or use `None` instead of `""`:
    options = ["entry 1", "entry 2", "", "add", "edit"]             # ["entry 1", "entry 2", None, "add", "edit"]
    terminal_menu = TerminalMenu(options, skip_empty_entries=True)  # TerminalMenu(options)
    menu_entry_index = terminal_menu.show()
    print(f"You have selected {options[menu_entry_index]}!")

if __name__ == "__main__":
    main()

Sửa đổi bản địa hóa / văn bản

Sử dụng các tham số hàm tạo

  • yay -S python-simple-term-menu
    
    57 và
  • yay -S python-simple-term-menu
    
    58

Để sửa đổi các văn bản tương ứng. Sử dụng trình giữ chỗ

yay -S python-simple-term-menu
59 cho khóa tìm kiếm trong
yay -S python-simple-term-menu
57 và cả
yay -S python-simple-term-menu
61 và
yay -S python-simple-term-menu
62 trong
yay -S python-simple-term-menu
58 nếu thích hợp.

Cài đặt thêm

Hơn nữa, hàm tạo

yay -S python-simple-term-menu
5 lấy các tham số bổ sung này để thay đổi hành vi menu:

  • yay -S python-simple-term-menu
    
    65: Giá trị bool cho biết nếu menu sẽ được xóa sau phương thức
    #!/usr/bin/env python3
    
    from simple_term_menu import TerminalMenu
    
    def main():
        options = ["entry 1", "entry 2", "entry 3"]
        terminal_menu = TerminalMenu(options)
        menu_entry_index = terminal_menu.show()
        print(f"You have selected {options[menu_entry_index]}!")
    
    if __name__ == "__main__":
        main()
    
    9. Mặc định là
    from simple_term_menu import TerminalMenu
    
    def main():                                                         # Or use `None` instead of `""`:
        options = ["entry 1", "entry 2", "", "add", "edit"]             # ["entry 1", "entry 2", None, "add", "edit"]
        terminal_menu = TerminalMenu(options, skip_empty_entries=True)  # TerminalMenu(options)
        menu_entry_index = terminal_menu.show()
        print(f"You have selected {options[menu_entry_index]}!")
    
    if __name__ == "__main__":
        main()
    
    7.
  • yay -S python-simple-term-menu
    
    68: Giá trị bool cho biết liệu màn hình sẽ được xóa trước khi menu được hiển thị. Mặc định là
    yay -S python-simple-term-menu
    
    69.
  • yay -S python-simple-term-menu
    
    70: Chỉ mục mục được chọn ban đầu.
  • yay -S python-simple-term-menu
    
    71: Một giá trị bool cho biết liệu con trỏ menu có chu kỳ khi kết thúc menu không. Mặc định là
    from simple_term_menu import TerminalMenu
    
    def main():                                                         # Or use `None` instead of `""`:
        options = ["entry 1", "entry 2", "", "add", "edit"]             # ["entry 1", "entry 2", None, "add", "edit"]
        terminal_menu = TerminalMenu(options, skip_empty_entries=True)  # TerminalMenu(options)
        menu_entry_index = terminal_menu.show()
        print(f"You have selected {options[menu_entry_index]}!")
    
    if __name__ == "__main__":
        main()
    
    7.
  • yay -S python-simple-term-menu
    
    73: Một khóa học có thể rời khỏi menu đầu cuối. Mặc định là
    yay -S python-simple-term-menu
    
    74.
  • yay -S python-simple-term-menu
    
    75: Đặt điều này thành
    from simple_term_menu import TerminalMenu
    
    def main():                                                         # Or use `None` instead of `""`:
        options = ["entry 1", "entry 2", "", "add", "edit"]             # ["entry 1", "entry 2", None, "add", "edit"]
        terminal_menu = TerminalMenu(options, skip_empty_entries=True)  # TerminalMenu(options)
        menu_entry_index = terminal_menu.show()
        print(f"You have selected {options[menu_entry_index]}!")
    
    if __name__ == "__main__":
        main()
    
    7 thành các ngắt bàn phím Reraise (bằng cách nhấn
    yay -S python-simple-term-menu
    
    77). Mặc định là
    yay -S python-simple-term-menu
    
    69.
  • yay -S python-simple-term-menu
    
    79: Vị trí thanh trạng thái bên dưới cửa sổ xem trước (định vị mặc định ở trên).

Chương trình dòng lệnh

yay -S python-simple-term-menu
4 có thể được sử dụng như một chương trình thiết bị đầu cuối trong các tập lệnh shell. Mã thoát của tập lệnh là chỉ mục dựa trên 1 của mục menu đã chọn. Mã thoát 0 báo cáo hành động hủy bỏ. Các đối số dòng lệnh sau được hỗ trợ:

yay -S python-simple-term-menu
0

Ví dụ với tùy chọn xem trước

Thay vì sử dụng API Python như trong các ví dụ trước, một menu tệp có xem trước

yay -S python-simple-term-menu
51 cũng có thể được tạo từ dòng lệnh:

yay -S python-simple-term-menu
1

Ví dụ nâng cao hơn

Một ví dụ nâng cao hơn với các menu phụ (nhờ Pageauc):

yay -S python-simple-term-menu
2

Các dự án tương tự

  • yay -S python-simple-term-menu
    
    82: Tạo danh sách viên đạn với hỗ trợ đa lựa chọn.

Đóng góp

Vui lòng mở một vấn đề trên GitHub nếu bạn gặp lỗi hoặc bỏ lỡ các tính năng. Vui lòng xem xét để gửi một yêu cầu kéo nếu bạn có thể dành thời gian để tự khắc phục vấn đề. Dự án này sử dụng tiền cam kết để đảm bảo chất lượng mã và kiểu mã nhất quán. Chạy

yay -S python-simple-term-menu
3

Để cài đặt tất cả các lớp lót dưới dạng móc git trong bản sao

yay -S python-simple-term-menu
4 cục bộ của bạn.