Всіх вітаю! У сьогоднішній статті ми розберемо бібліотеку questionary, яка має корисні інструменти для введення тексту та вибору варіантів прямо у терміналі.
Встановлення бібліотеки
Windows:
pip install questionaryMacOS:
pip install questionaryLinux:
pip install questionaryДе запускати програму?
Перед роботою з цією бібліотекою варто зазначити, що її необхідно запускати саме у командному рядку вашої ОС. Тобто у консолі іншого середовища розробки код працювати не буде.
Windows
У цій ОС вам треба просто відкрити командний рядок (пишете cmd у пошуку) та перейти у шлях файлу з програмою за допомогою такої команди:
cd тут буде ваш шлях до файлуЯкщо ж вам для цього потрібно перейти на інший диск, тоді додаєте /d після cd:
cd /d тут буде ваш шлях до файлуОсь приклад моєї команди:
cd /d "D:\Hobbies\Programming\Python\Channel posts\QuestionaryLibrary"Після цього ви опиняєтеся у потрібному шляху і тепер можете заускати код. Заустити код у командному рядку Windows можна за такою командою:
python your_filename.pyДля MacOS та Linux
У цих ОС також використовується команда cd, але після неї шлях повинен бути записаний за допомогою переднього слешу (/). У MacOS та Linux також обов’язково треба ставити шлях у лапки, якщо якийсь каталог має у назві пробіл.
Для запуску коду у цих ОС треба використовувати цю команду:
python3 your_filename.pyФункції введення даних
Функція text()
Спершу імпортуємо бібліотеку:
import questionary as questФункція text() приймає і виводить відповідний текст, а функція ask() чекає відповіді від користувача.
Ось приклад:
quest.text("Enter your username:").ask()? Enter your username: HarryФункція password()
Функція password() також чекає відповіді користувача, але на відміну від text() вона приховує його введення.
Приклад:
quest.password("Enter your password:").ask()? Enter your password: ******Функція confirm()
Функція confirm() чекає на відповідь користувача, при цьому надає йому лише два варіанти відповіді: так або ні.
quest.confirm("Did you have an experience in programming?").ask()? Did you have an experience in programming? (Y/n)Функції вибору варіантів
Функція select()
Функція select() приймає текст, який вона потім виведе у консоль та список із варіантами відповідей. Далі ми можемо просто обирати варіанти за допомогою стрілочок.
Приклад:
mood_type = ["Scared", "Happy", "Satisfied", "Anxious"]
quest.select("Describe your mood", mood_type).ask()? Describe your mood (Use arrow keys)
Scared
» Happy
Satisfied
AnxiousФункція rawselect()
Функція rawselect() за сенсом ідентична до select(), але має пронумеровані варіанти відповідей та дозволяє обирати їх тільки через цифрові клавіші.
Приклад:
years_list = ["20-25 years old", "30-35 years old", "40-45 years old", "50-55 years old"]
quest.rawselect("How old are you?", years_list).ask()? How old are you? (Use shortcuts)
» 1) 20-25 years old
2) 30-35 years old
3) 40-45 years old
4) 50-55 years oldФункція checkbox()
Функція checkbox() також дає змогу обрати варіанти, але у ній можна обирати більше одного варіанта та контролювати вибір іншими клавішами.
Приклад:
wordlist = ["Biblioklept", "Audacity", "Draconian", "Insomnia"]
quest.checkbox("Select unknown words", wordlist).ask()? Select unknown words (Use arrow keys to move, <space> to select, <a> to toggle, <i> to invert)
» ○ Biblioklept
○ Audacity
○ Draconian
○ InsomniaФункція path()
Функції path() приймає лише текст та чекає конкретно шлях до файла. ЇЇ особливість у тому, що вона додає підказки під час твого вводу. Це якраз і показано у прикладі:
quest.path("Enter the path to your python file:").ask()
Функція form()
Якщо ми захочемо задати два питання підряд, то для цього треба використовувати функцію form(), яка приймає потрібну нам кількість питань.
first_name = quest.text("Enter your first name:")
surname = quest.text("Enter your surname:")
secret_key = quest.password("Secret key:")
sign_up_form = quest.form(firstname=first_name, lastname=surname, key=secret_key).ask()? Enter your first name: John
? Enter your surname: Clifford
? Secret key: *****Варто зауважити, що дані у form() передається за допомогою словника, тобто firstname, lastname, key — це ключі словника, а first_name, surname та secret_key — його значення.
Якщо ми виведемо значення змінної sign_up_form, то отримаємо такий словник:
{'firstname': 'John', 'lastname': 'Clifford', 'key': 'quest'}Функція autocomplete()
Функція autocomplete() приймає текст для виведення та список з елементами. Дана функція автоматично заповнює введення користувача за елементами у списку. Тобто функція очікує відповідь від користувача, паралельно надаючи йому підказки, що конкретно треба ввести.
Приклад:
languages = ["Python", "Java", "JavaScript", "Kotlin", "Mojo", "TypeScript", "C#", "C++", "C"]
quest.autocomplete("Programming language:", languages).ask()
Висновок
Отже, у даній статті ми ознайомилися з бібліотекою questionary та деякою частиною її функцій, що цілком можуть допомогти при створенні консольних додатків. Всім дякую за увагу!