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.使用鼠标和键盘事件,创建一个“蛇追海龟”的游戏