""" 海龟移动事件产生测试程序_root.event_generate turtle基于tkinter,所以调用root的event_generate能指挥鼠标移动,当然按键等都可以, 这样的海龟编程可是有趣多了,潘朵拉盒子打开了,会一发不可收拾。 这个程序在运行后,海龟会随机移动,然后鼠标指针过一会儿会瞄准它,让它消失! 由于速度太快,所以录的gif看不出来。示例为硬编码,只为学习,没搞太抽象。 """ import random import turtle def mouse_pos(): """获取相对于海龟屏幕的鼠标指针坐标,和屏幕的缩放参数scale无关。""" abs_coord_x = root.winfo_pointerx() - root.winfo_rootx() abs_coord_y = root.winfo_pointery() - root.winfo_rooty() x = abs_coord_x - 400 # 减去屏幕宽度一半 y = 300 - abs_coord_y x, y = (x-3),(y+3) return (x,y) def die(): if turtle.fillcolor()!='red': turtle.fillcolor('red') turtle.ontimer(die,100) else: turtle.ht() def wait(): # 获取鼠标指针在画布上的坐标(基于海龟坐标系) mx,my = mouse_pos() if ((mx-turtle.xcor())**2 + (my-turtle.ycor())**2)**0.5>10: turtle.ontimer(wait,100) else: die() turtle.setup(800,600) turtle.shape('turtle') turtle.shapesize(2) cv = turtle.getcanvas() root = turtle.getscreen()._root while 1: turtle.seth(random.randint(1,360)) turtle.fd(random.randint(10,100)) if random.randint(1,20)==1: left = turtle.xcor() + 400 top = 300 - turtle.ycor() root.event_generate('', warp=True, x=left, y=top) wait() break
李兴球
李兴球的博客是Python创意编程原创博客
要发表评论,您必须先登录。
发表评论