Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中尝试拖动海龟时内核崩溃_Python_Python 3.x_Turtle Graphics - Fatal编程技术网

在python中尝试拖动海龟时内核崩溃

在python中尝试拖动海龟时内核崩溃,python,python-3.x,turtle-graphics,Python,Python 3.x,Turtle Graphics,我决定使用内置的海龟来显示我的整个程序,但是如果有更好的选择,你也可以把它留在这里 因此,当我使用turtle并将一个函数绑定到左键单击拖动时,它最终运行良好,但只适用于缓慢的鼠标速度,因此,在崩溃内核并导致致命的“堆栈溢出”错误之前,它会运行很短的时间 代码: 从海龟导入* screen=screen() t1=海龟() t1.形状(“圆”) t1.pu() bi=1 ni=1 屏幕跟踪程序(无,0) t1.速度(0) 屏幕。屏幕大小(10001000) def增长(ke): t1.后藤(ke

我决定使用内置的海龟来显示我的整个程序,但是如果有更好的选择,你也可以把它留在这里

因此,当我使用turtle并将一个函数绑定到左键单击拖动时,它最终运行良好,但只适用于缓慢的鼠标速度,因此,在崩溃内核并导致致命的“堆栈溢出”错误之前,它会运行很短的时间

代码:

从海龟导入*
screen=screen()
t1=海龟()
t1.形状(“圆”)
t1.pu()
bi=1
ni=1
屏幕跟踪程序(无,0)
t1.速度(0)
屏幕。屏幕大小(10001000)
def增长(ke):
t1.后藤(ke.x-475,-ke.y+400)
全球bi,ni
t1.形状尺寸(铋、镍)
bi+=0.004
ni+=0.004
s2=getcanvas()
s2.绑定(“,增长)
s2.绑定(“,增长)

您的代码有几个问题:

  • 您没有禁用事件处理程序中的事件,这是导致 到您的致命“堆栈溢出”错误

  • 您绕过了turtle自己的事件机制,使用了tkinter的事件机制 基础有时候这是必要的,但这不是一个好地方 开始

  • 您不需要关闭
    tracer()
    ,因为您没有绘制任何东西

下面是我对您的代码的修改,我相信这些代码达到了您的基本目标。你可以把海龟干净地拖到屏幕上,它会像你一样成长。您可以单击屏幕上的任意位置,海龟会来到您身边并成长:

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()

仅供参考,你的内核没有崩溃,你的程序崩溃了。如果内核崩溃,我不希望你的程序是原因
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()