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)