尝试在python中拖动乌龟时内核崩溃
作者:互联网
我决定使用内置的乌龟来显示我的整个程序,但如果有更好的选择,你也可以把它留在这里.
因此,当我使用乌龟并将一个函数绑定到左键单击拖动时,它最终工作正常,但仅适用于慢速鼠标速度,因此,在崩溃我的内核并给我一个致命的“堆栈”之前的短时间内溢出“错误.
码:
from turtle import *
screen = Screen()
t1 = Turtle()
t1.shape("circle")
t1.pu()
bi = 1
ni = 1
screen.tracer(None, 0)
t1.speed(0)
screen.screensize(1000,1000)
def grow(ke):
t1.goto(ke.x - 475,-ke.y + 400)
global bi, ni
t1.shapesize(bi,ni)
bi += .004
ni += .004
s2 = getcanvas()
s2.bind("<B1-Motion>", grow)
s2.bind("<Button-1>", grow)
解决方法:
您的代码有几个问题:
>你没有禁用事件处理中的事件,这是什么导致
致命的“堆栈溢出”错误.
>你绕过了龟自己的事件机制并使用了tkinter的事件机制
基础.有时这是必要的,但它不是那个地方
开始.
>您不需要关闭跟踪器(),因为您没有绘制任何东西.
下面是我对您的代码的修改,我相信这些代码可以实现您的基本目标.你可以干净地将乌龟拖到屏幕周围,它会像你一样长大.您可以点击屏幕上的任意位置,乌龟会来找你并成长:
from turtle import Turtle, Screen
def grow(x, y):
global bi, ni
turtle.ondrag(None) # disable events when inside handler
screen.onclick(None)
turtle.goto(x, y)
turtle.shapesize(bi, ni)
bi += 0.04
ni += 0.04
turtle.ondrag(grow)
screen.onclick(grow)
screen = Screen()
screen.screensize(1000, 1000)
turtle = Turtle('circle')
turtle.speed('fastest')
turtle.penup()
bi = ni = 1
turtle.ondrag(grow)
screen.onclick(grow)
screen.mainloop()
标签:python,python-3-x,turtle-graphics 来源: https://codeday.me/bug/20190705/1388553.html