Quickstart
Questionary supports two different concepts:
creating a single question for the user
questionary.password("What's your secret?").ask()
creating a form with multiple questions asked one after another
answers = questionary.form( first = questionary.confirm("Would you like the next question?", default=True), second = questionary.select("Select item", choices=["item1", "item2", "item3"]) ).ask()
Asking a Single Question
Questionary ships with a lot of different Question Types to provide the right prompt for the right question. All of them work in the same way though. Firstly, you create a question:
import questionary
question = questionary.text("What's your first name")
and secondly, you need to prompt the user to answer it:
answer = question.ask()
Since our question is a text
prompt, answer
will
contain the text the user typed after they submitted it.
You can concatenate creating and asking the question in a single line if you like, e.g.
import questionary
answer = questionary.text("What's your first name").ask()
Note
There are a lot more question types apart from text
.
For a description of the different question types, head
over to the Question Types.
Asking Multiple Questions
You can use the form()
function to ask a collection
of Questions
. The questions will be asked in
the order they are passed to :meth:`~questionary.form`.
import questionary
answers = questionary.form(
first = questionary.confirm("Would you like the next question?", default=True),
second = questionary.select("Select item", choices=["item1", "item2", "item3"])
).ask()
print(answers)
The printed output will have the following format:
{'first': True, 'second': 'item2'}
The prompt()
function also allows you to ask a
collection of questions, however instead of taking Question
instances, it takes a dictionary:
import questionary
questions = [
{
"type": "confirm",
"name": "first",
"message": "Would you like the next question?",
"default": True,
},
{
"type": "select",
"name": "second",
"message": "Select item",
"choices": ["item1", "item2", "item3"],
},
]
questionary.prompt(questions)
The format of the returned answers is the same as the one for
form()
. You can find more details on the configuration
dictionaries in Create Questions from Dictionaries.