1.画布绑定鼠标点击事件

1.1.什么是事件?

是指可以被控件识别的操作。例如:鼠标的单击和双击被称为鼠标点击事件,还有键盘事件。

1.2.如何让画布绑定鼠标点击事件?画布如何绑定鼠标点击位置?

使用onclick()方法可以解决这两个问题。

screen.onclick(fun) #需要一个函数fun作为参数

解释onclick()方法源码:

def onclick(fun):

主体:获取鼠标点击时x,y的坐标

return fun(x,y)

import turtle

turtle.shape('turtle')

screen=turtle.Screen() #获取画布

screen.bgcolor('yellow') #设置画布背景颜色

#fun里面的函数体是可以自己定义的

def fun(x,y):

print(x,y)

turtle.goto(x,y)

'''

onclick可以获取鼠标点击x,y的坐标值,里面是一个参数fun,

fun也可以是别的函数名,但一定要有两个参数x,y,

因为每次单击鼠标都会调用一次onclick,然后onclick返回一个x,y值,然后调用fun(x,y)

'''

screen.onclick(fun)

screen.mainloop() #使画布运行完之后不要关闭

运行结果:

鼠标单击到拿一处,就获取一个坐标值,然后调用fun(x,y) 函数


2.画布绑定键盘事件

2.1.画布简单绑定键盘事件

import turtle

turtle.shape('turtle')

screen=turtle.Screen() #获取画布

screen.bgcolor('yellow') #设置画布背景颜色

#onkey方法需要两个参数,onkey(fun,key)一个是函数fun,另外一个是键盘上的键位key

#函数fun不需要参数

def fun():

screen.bgcolor('red')

screen.onkey(fun,'r')#当按下r键,就执行fun,严格区分大小写

#设置不同的函数就可以做到执行不同的效果

def fun1():

turtle.forward(100)

def fun2():

turtle.circle(100)

screen.onkey(fun1,'a')

screen.onkey(fun2,'b')

screen.listen() #鼠标单击画布,设置焦点,,开始收集键盘事件,如果没有本行代码,按下r键是没有反应的,单击画布开始执行

screen.mainloop()

按下r键,画布变成红色


按下a,b键位,可以执行fun1,fun2函数


2.2.键盘上的上下左右分别控制画笔的前进,后退,左转,右转

import turtle

turtle.shape('turtle')

screen=turtle.Screen() #获取画布

screen.bgcolor('yellow') #设置画布背景颜色

#自定义前后左右键位分别对应执行的函数

def up():

turtle.forward(50)

def back():

turtle.backward(50)

def left():

turtle.left(90)

def right():

turtle.right(90)

#调用onkey函数

screen.onkey(up,'Up')

screen.onkey(back,'Down')

screen.onkey(left,'Left')

screen.onkey(right,'Right')

#单击鼠标焦点开始获取键盘事件

screen.listen()

#运行完毕后不关闭screen窗口

screen.mainloop()

3.鼠标点击事件和键盘事件同时存在(可以同时用鼠标或用键盘控制画笔)

使用默认参数,可以让onclick和onkey都使用函数fun,因此下面代码可以通过鼠标点击屏幕让海龟前进50,也可以通过按键盘上的‘r'键:

import turtle
screen=turtle.Screen()
turtle.speed(0)
def fun(x=None,y=None): #使用默认参数
turtle.forward(50)
screen.onclick(fun)
screen.listen()
screen.onkey(fun,'r')
screen.mainloop()

4.使用鼠标和键盘事件,创建一个“蛇追海龟”的游戏