Python 如何基于第一次输入显示/隐藏输入选项?

Python 如何基于第一次输入显示/隐藏输入选项?,python,python-3.x,command-line-interface,python-click,Python,Python 3.x,Command Line Interface,Python Click,我正在使用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(u

我正在使用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()
仅当用户为第一次输入键入yes(
'--user/--no user'
)时,我才想显示第二次提示(
'--new 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\u user
返回两个值的元组。因此,行
user,new_user=user
user
设置为第一个值,将
new_user
设置为第二个值。请参阅以获取更多解释。

重复问题:如果您有新问题,则必须按照SO规则创建新帖子。非常感谢您的回答。有一件事我不能理解,那就是
user,new\u user=user
。这意味着
user、new\u user
应该具有相同的值,但它们不应该具有相同的值,因为它们具有不同的值(如果是,user=True,new\u user=no)。你能说几句话吗?@Yahya补充了一个解释-这是由于元组解包。
user,new\u user=user
这里右侧的
user
基本上是调用返回两个值的
prompt\u user
。我说的对吗?谢谢,请再问一个问题。是否可以在两个
click.option()
之间打印自定义消息?您可以随时更改
click.prompt('username')
以显示所需内容,或在其前面添加更多
print
语句。