"""
海龟移动事件产生测试程序_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
-
- 2026 年 3 月
- 2026 年 2 月
- 2026 年 1 月
- 2025 年 12 月
- 2025 年 11 月
- 2025 年 10 月
- 2025 年 9 月
- 2025 年 6 月
- 2025 年 5 月
- 2025 年 3 月
- 2025 年 2 月
- 2025 年 1 月
- 2024 年 12 月
- 2024 年 8 月
- 2024 年 6 月
- 2024 年 5 月
- 2024 年 4 月
- 2024 年 3 月
- 2024 年 2 月
- 2023 年 11 月
- 2023 年 9 月
- 2023 年 6 月
- 2023 年 5 月
- 2023 年 4 月
- 2023 年 3 月
- 2023 年 2 月
- 2023 年 1 月
- 2022 年 12 月
- 2022 年 11 月
- 2022 年 10 月
- 2022 年 9 月
- 2022 年 8 月
- 2022 年 7 月
- 2022 年 6 月
- 2022 年 5 月
- 2022 年 4 月
- 2022 年 3 月
- 2022 年 2 月
- 2022 年 1 月
- 2021 年 12 月
- 2021 年 11 月
- 2021 年 10 月
- 2021 年 9 月
- 2021 年 8 月
- 2021 年 7 月
- 2021 年 6 月
- 2021 年 5 月
- 2021 年 4 月
- 2021 年 3 月
- 2021 年 2 月
- 2021 年 1 月
- 2020 年 12 月
- 2020 年 11 月
- 2020 年 10 月
- 2020 年 9 月
- 2020 年 8 月
- 2020 年 7 月
- 2020 年 6 月
- 2020 年 5 月
- 2020 年 4 月
- 2020 年 3 月
- 2020 年 2 月
- 2020 年 1 月
- 2019 年 12 月
- 2019 年 11 月
- 2019 年 10 月
- 2019 年 9 月
- 2019 年 8 月
- 2019 年 7 月
- 2019 年 6 月
- 2019 年 5 月
- 2019 年 4 月
- 2019 年 3 月
- 2019 年 2 月
- 2018 年 3 月
- 2018 年 1 月
- 2017 年 9 月
- 2017 年 5 月
- 2017 年 1 月
