Методы textinput и numinput ‒ ввод данных в модуле turtle языка Python

Словарь урока

из модуля turtle:
  • teleport ‒ телепорт
  • forward ‒ вперед
  • backward ‒ назад
  • write ‒ писать, записывать
  • font ‒ шрифт
  • fillcolor ‒ цвет (color) заливки (filling)
  • begin_fill ‒ начать (begin) заполнение (fill)
  • end_fill ‒ конец (end) заполнения (fill)
  • circle ‒ круг, окружность
  • dot ‒ точка
  • steps ‒ шаги (step ‒ шаг)
  • textinput ‒ ввод (input) текста (text)
  • numinput ‒ ввод (input) числа (num, number)
  • default ‒ по умолчанию
  • minvalue ‒ минимальное (minimum) значение (value)
  • maxvalue ‒ максимальное (maximum) значение (value)
из языка Python:
  • None ‒ ничто, никто

Многие программы работаю не сами по себе, а взаимодействуют с человеком ‒ пользователем программы. Человек делает это как путем ввода данных с клавиатуры, так и совершая различные действия в интерфейсе программы, например, кликая мышью по кнопке или выбирая элемент списка на экране. Далее программа обрабатывает полученные данные и в зависимости от них меняет свое поведение.

В модуле 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)

Задания для самостоятельной работы

  1. В процессе выполнения программы человек вводит несколько фраз. Выведите их друг под другом на холсте разным шрифтом.
  2. Пользователь вводит координаты x и y. Пусть черепаха нарисует в этом месте точку.
  3. Залейте окружность цветом, который пользователь введет в виде его словесного названия (на английском, из допустимых в tkinter цветов). Радиус круга также должен определяться в момент выполнения программы.
  4. Залейте квадрат цветом, который пользователь определяет с помощью ввода насыщенности красного, зеленого и синего (RGB-модель).

Turtle. Программирование на Python для школьников




Все разделы сайта