DEV Community

Kelvin Wangonya
Kelvin Wangonya

Posted on Originally published at wangonya.com

Prompting users for input

Getting user input is an important part of any kind of application. Since we've already learned about options, adding a user prompt to our hello world app should be a breeze. All we need to do is add prompt=True to the option decorator, so that it prompts the user for input if no option is passed in.

# helloworld.py

import click

@click.command()
@click.option('-c', '--case',
              type=click.Choice(['upper', 'lower']),
              prompt=True)
@click.argument('person', default='you')
def hello(case, person):
    response = "Hello World! Also, hey {} ☺️".format(person)
    if case == 'upper':
        click.echo(response.upper())
    elif case == 'lower':
        click.echo(response.lower())
    else:
        click.echo(response)
Enter fullscreen mode Exit fullscreen mode

Save and run the app:

(venv) $ hello
Case (upper, lower): upper
HELLO WORLD! ALSO, HEY YOU ☺️

(venv) $ hello sally
Case (upper, lower): lower
hello world! also, hey sally ☺️
Enter fullscreen mode Exit fullscreen mode

You may also set a custom prompt string if you wish:

# helloworld.py

import click

@click.command()
@click.option('-c', '--case',
              type=click.Choice(['upper', 'lower']),
              prompt='Please enter case')
@click.argument('person', default='you')
def hello(case, person):
    response = "Hello World! Also, hey {} ☺️".format(person)
    if case == 'upper':
        click.echo(response.upper())
    elif case == 'lower':
        click.echo(response.lower())
    else:
        click.echo(response)
Enter fullscreen mode Exit fullscreen mode

The set string will now be displayed instead of the default prompt:

(venv) $ hello
Please enter case (upper, lower): upper
HELLO WORLD! ALSO, HEY YOU ☺️
Enter fullscreen mode Exit fullscreen mode

Top comments (0)