Методы textinput и numinput ‒ ввод данных в модуле turtle языка Python
Словарь урока
из модуля turtle: |
|
---|---|
из языка Python: |
|
Многие программы работаю не сами по себе, а взаимодействуют с человеком ‒ пользователем программы. Человек делает это как путем ввода данных с клавиатуры, так и совершая различные действия в интерфейсе программы, например, кликая мышью по кнопке или выбирая элемент списка на экране. Далее программа обрабатывает полученные данные и в зависимости от них меняет свое поведение.
В модуле turtle языка Python для получения данных с клавиатуры предназначены методы textinput
и numinput
. Первый используется, когда от пользователя ожидается ввод строки. При этом не обязательно, чтобы вводились только буквы. Там могут быть и цифры. Однако в программу все это поступит в виде одной строки, то есть в кавычках. Если же нужно получить от пользователя исключительно число, вызывается numinput
.
Рассмотрим такую программу:
teleport(-200, 150) write(textinput('Текст на холсте', 'Введите фразу')) teleport(0, -50) circle(100)
Когда она запускается, то первая инструкция teleport
отправляет черепаху ближе к верхнему левому углу. Потом идет сложная инструкция, в которой функция textinput
находится в скобках функции write
. Это означает, что сначала будет выполняться textinput
, а то, что оттуда вернется, будет передано методу write
, который выведет полученную строку на холсте.
Программа в момент выполнения textinput
выглядит так:
На экране появляется всплывающее диалоговое окно, заголовок которого ‒ это первый аргумент, переданный в textinput
. Второй ‒ поясняющая надпись над полем ввода ‒ это так называемый промпт. Он подсказывает человеку, что ему следует написать в белое поле ввода. Ввести туда можно все что угодно.
Если нажимается кнопка "ОК" или клавиша Enter на клавиатуре, то в программу возвращается введенная человеком строка. Она может быть пустой, то есть нулевой длины, если ничего не было введено.
Если нажимается кнопка "Cancel" или крестик в заголовке окна или клавиша Esc, то в программу возвращается None
‒ особый объект языка Python.
После выполнения всех команд на холсте получится примерно такая картина:
Теперь рассмотрим программу, в которой используется функция numinput
:
teleport(100, -50) backward(numinput('Первая сторона угла', 'Длина')) left(numinput('Угол поворота', 'Размер угла в градусах', 90, 0, 360)) forward(numinput('Вторая сторона угла', 'Длина'))
В результате ее выполнения черепахой будет нарисован угол ‒ фигура, состоящая из двух отрезков, выходящих из одной точки. Длину сторон и угол между ними определяет пользователь.
Если методу numinput
передаются только два обязательных аргумента ‒ заголовок и промпт, то в поле ввода можно писать любое число. В том числе дробное и отрицательное.
Однако в numinput
можно передать три дополнительных аргумента, которые присваиваются параметрам default
, minval
, maxval
‒ значения по-умолчанию, минимальное и максимальное. Значение по-умолчанию сразу появляется в поле ввода, и если человек его там не поменяет, оно будет возвращено в программу.
Минимум и максимум устанавливают диапазон для допустимых чисел. Так в нашем примере пользователь может ввести значение угла от 0 до 360. Если он введет иное число, то появится сообщение о непозволительном значении. После закрытия окна с таким предупреждением, нужно будет откорректировать свой ввод.
В функцию numinput
можно передавать не все дополнительные аргументы. Если указывается только значение по-умолчанию, то оно передается третьим аргументом:
numinput('Первая сторона угла', 'Длина', 100)
Если используется только минимум или максимум или сразу оба, то аргументы надо передавать, связывая их с соответствующими именами параметров метода numinput
. Потому что иначе будет непонятно, для каких параметров передаются значения.
numinput('Заголовок', 'Пояснение', minval=30) numinput('Заголовок', 'Пояснение', maxval=200) numinput('Заголовок', 'Пояснение', minval=30, maxval=200)
Задания для самостоятельной работы
- В процессе выполнения программы человек вводит несколько фраз. Выведите их друг под другом на холсте разным шрифтом.
- Пользователь вводит координаты x и y. Пусть черепаха нарисует в этом месте точку.
- Залейте окружность цветом, который пользователь введет в виде его словесного названия (на английском, из допустимых в tkinter цветов). Радиус круга также должен определяться в момент выполнения программы.
- Залейте квадрат цветом, который пользователь определяет с помощью ввода насыщенности красного, зеленого и синего (RGB-модель).