Здравствуйте, дорогие читатели моего блога. Сегодня тема посвещена процессу обработки событий нажатия клавиш модулем turtle в языке программирования Python.
Теория
В данный модуль встроены функции обработки событий, вот некоторые из них:
1. onclick(fun, btn, add) - нажатие на клавишу мыши, где
fun — вызываемая функция, btn — номер клавиши мыши (1 —
левая, по умолчанию), add (значения True или False, если True
(по умолчанию), то к кнопке будет добавлена новая привязка,
иначе она заменяет прежнюю);
2. onkey(fun, key) - нажатие на клавишу клавиатуры, где fun —
вызываемая функция, key — название клавиши, например,
«space», «up», «a»;
3. ontimer(fun, t) - устанавливает таймер, где fun —
вызываемая функция, t — число t >= 0, время в
миллисекундах, после истечения которого будет вызвана
функция fun
Практика
На практике мы попробуем все из этих функций: onclick, onkey и ontimer.
Создадим программу, которая будет рисовать квадраты по нажатию выбранной клавиши и по нажатию кнопки мыши.
Для того чтобы обрабатывались события нажатия клавиш используют класс Screen(), которая создаёт область покрытия всего окна для обнаружения события.
Ниже представлено начало нашей программы:
- import turtle
- import random
- w = turtle.Screen()
- w.title("Квадраты")
- w.bgcolor('light blue')
В качестве рализации работы двух первых функций создадим две функции (метода) для построения двух квадратов. Оба будут разных размеров. Но один будет получать координаты начала построения напрямую от указателя мыши, а второй вызывать случайные значения координат при нажатии клавиши Up.
def cvadro(x,y):
turtle.color("green")
turtle.width(10)
turtle.up()
turtle.goto(x,y)
turtle.down()
for i in range (4):
turtle.forward(100)
turtle.right(90)
def cvadro1():
x= random.randint(-400, 400)
y= random.randint(-400, 400)
turtle.color("red")
turtle.width(10)
turtle.up()
turtle.goto(x,y)
turtle.down()
for i in range (4):
turtle.forward(100)
turtle.right(90)
Далее, нам необходимо вызвать функции onclick и onkey и привязать к ним созданные методы.
Для метода onkey необходимо использовать функцию listen(). Данная функция необхадима для активации нашего screen, чтобы программа поняла на каком холсте рисовать
w.onclick(cvadro, 1)
w.onkey(cvadro1, "Up")
w.listen()
Обратите внимание на код в методах. В начале кода используется turtle.up(), для того чтобы черепашка не оставляла след при перемещении по холсту к исходной точке.
Также прошу обратить внимание на формат записи клавиши в onkey(). Наименование клавиши записывается в кавычках с большой буквы.
Кликнем по F5 чтобы запустить программу и кликаем левой кнопкой мыши по любой области холста. В результате мы наблюдаем построение зелёного квадрата в том месте где находился указатель мыши.
Если мы будем кликать по клавише Up то будет рисоваться красный квадрат в происзвольной начальной точке относительно размеров окна. Пример ниже.
Если же нам необходимо чтобы квадрат создавался по истечению определённого времени, то воспользуемся методом ontimer.
w.ontimer(cvadro1, 1000)
Для данной команды нужно ввести два параметра:
- имя вызываемого метода
- время, через которое будет вызываться метод
Вы можете просмотреть видеоурок по данной теме здесь:
Итог
Исходя из изложенного материала мы изучили особенности считывания событий клавиш, кнопок мыши и отсчёт времени в модуле turtle.