Как показать / скрыть параметр ввода на основе первого ввода? - PullRequest
2 голосов
/ 14 января 2020

Я пишу инструмент командной строки, используя Python Нажмите пакет.

Для пользовательского ввода я хочу показать / скрыть следующую опцию ввода на основе первого ввода.

Вот пример кода:

import click


@click.command()
@click.option('--user/--no-user', prompt='do you want to add user?')
@click.option('--new-user', prompt='add user')
def add_user(user, new_user):
    print(user)
    print(new_user)


add_user()

Я хочу показывать второе приглашение ('--new-user'), только если пользователь вводит да для первого ввода ('--user/--no-user').

Любая помощь, как я могу это сделать? Заранее спасибо.

1 Ответ

2 голосов
/ 14 января 2020

Вы должны будете использовать пользовательский обратный вызов:

import click

def prompt_user(ctx, param, user):
    new_user = None
    if user:
        new_user = click.prompt('username')
    return (user, new_user)


@click.command()
@click.option('--user/--no-user', prompt='do you want to add user?', callback=prompt_user)
def add_user(user):
    user, new_user = user
    print(user)
    print(new_user)

if __name__ == '__main__':
    add_user()

$ python3.8 user.py
do you want to add user? [y/N]: y
username: no
True
no
$ python3.8 user.py
do you want to add user? [y/N]: N
False
None

Обратите внимание, что prompt_user возвращает кортеж из двух значений. Таким образом, строка user, new_user = user устанавливает user равным первому значению и new_user второму. См. эту ссылку для более подробного объяснения.

...