Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.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_Turtle Graphics_Window Management - Fatal编程技术网

Python 海龟图形-如何控制窗口何时关闭?

Python 海龟图形-如何控制窗口何时关闭?,python,turtle-graphics,window-management,Python,Turtle Graphics,Window Management,我有一个小python脚本,它可以绘制一些海龟图形。当我的脚本完成运行时,turtle屏幕会自动关闭,因此为了能够看到一段时间的图形,我必须在脚本末尾使用time.sleep(5)来延迟关闭 有没有什么方法可以使它更具动态性,即告诉python我想自己控制窗口的关闭?我不介意脚本在等待我的命令时是否不能执行任何其他操作,但我更希望不必去控制台执行read()或其他操作。理想情况下,即使在脚本完成运行之后,画布也应该保持打开状态,但我同意一种解决方案,即在关闭保存画布的窗口(或单击画布,或其他……

我有一个小python脚本,它可以绘制一些海龟图形。当我的脚本完成运行时,turtle屏幕会自动关闭,因此为了能够看到一段时间的图形,我必须在脚本末尾使用
time.sleep(5)
来延迟关闭

有没有什么方法可以使它更具动态性,即告诉python我想自己控制窗口的关闭?我不介意脚本在等待我的命令时是否不能执行任何其他操作,但我更希望不必去控制台执行
read()
或其他操作。理想情况下,即使在脚本完成运行之后,画布也应该保持打开状态,但我同意一种解决方案,即在关闭保存画布的窗口(或单击画布,或其他……)之前停止脚本

如何完成此任务?

导入海龟
import turtle

turtle.forward(100)
turtle.left(90)
turtle.forward(100)
# etc.

turtle.getscreen()._root.mainloop()  # <-- run the Tkinter main loop
乌龟前进(100) 乌龟。左(90) 乌龟前进(100) #等等。 turtle.getscreen()。_root.mainloop()#尝试在代码末尾添加
input()

只需使用从turtle模块本身导入的mainloop()函数即可

import turtle


#Draw a square
for i in range(4):
    turtle.forward(200)
    turtle.left(90)


#calling for the mainloop()
turtle.mainloop()

只需使用或作为turtle程序的最后一个命令。

这将等待几次单击,并在单击时绘制一个螺旋,直到它决定在最后一次单击时退出:

import turtle


win = turtle.Screen()
win.bgcolor("white")

tess = turtle.Turtle()

tess.speed(0)
tess.color("blue")             
tess.pensize(5)                 
offSet=30

def doNextEvent(x,y):

    global offSet
    global win
    tess.forward(20)
    tess.left(1+offSet)
    offSet=offSet-2
    if(offSet<1):
        win.exitonclick()


win.onclick(doNextEvent)
win.listen()
win.mainloop()
导入海龟
win=turtle.Screen()
win.bgcolor(“白色”)
苔丝=乌龟。乌龟()
苔丝,速度(0)
苔丝。颜色(“蓝色”)
苔丝·潘西(5)
偏移量=30
def doNextEvent(x,y):
全局偏移
全球胜利
苔丝,前进(20)
苔丝。左(1+偏移)
偏移量=偏移量-2

if(offSetPerfect!脚本暂停,直到我关闭窗口,然后继续。是否需要getscreen()。_根部分?turtle.mainloop()工作正常(在Python 3中).
AttributeError:'turtle'对象没有属性'mainloop'
似乎工作正常。@DonKirkby其turtle.mainloop()不是turtle.mainloop()你是对的,@DevX,不知道我是怎么弄错的。这个答案现在对我有效了。python-I script.py从terminal开始工作这个问题和答案对用PyCharm编写的海龟程序也是有效的!不,不是:
AttributeError:“\u Screen”对象没有属性“mainloop”
import-turtle;turtle.exitonclick()
在Python 3中应该足够了。