如何根据第一个输入show/hide输入选项?

How to show/hide input option based on the first input?

我正在使用 Python Click 包编写命令行工具。

对于用户输入,我想show/hide根据第一个输入选择下一个输入。

示例代码如下:

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')。

任何帮助我如何做到这一点? 提前致谢。

您必须使用自定义回调:

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 returns 两个值的元组。所以行 user, new_user = useruser 设置为第一个值,将 new_user 设置为第二个值。有关更多说明,请参阅 this link