41

タートルグラフィックスを描画する小さなPythonスクリプトがあります。スクリプトの実行が終了すると、タートル画面が自動的に閉じます。そのため、しばらくの間グラフィックを表示できるようにするにtime.sleep(5)は、スクリプトの最後で終了を遅らせるために使用する必要があります。

これをより動的にする方法はありますか?つまり、ウィンドウの閉じを自分で制御したいことをPythonに伝えますか?コマンドを待っている間、スクリプトが他に何もできないかどうかは気になりませんが、read()何かのためにコンソールに行く必要がない方がいいと思います。理想的には、スクリプトの実行が終了した後もキャンバスは開いたままである必要がありますが、キャンバスを保持しているウィンドウを閉じる(またはキャンバスをクリックするなど)までスクリプトを停止するソリューションで問題ありません。

どうすればこれを達成できますか?

4

5 に答える 5

78

タートルプログラムの最後のコマンドとして、turtle.done()またはを使用してください。turtle.Screen().exitonclick()

于 2012-06-13T22:03:23.323 に答える
24
import turtle

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

turtle.getscreen()._root.mainloop()  # <-- run the Tkinter main loop

(編集:turtle.done()以下のhuaが示唆するように、醜いものではありません。)

于 2011-06-05T00:26:07.337 に答える
10

turtleのモジュール自体からインポートされたmainloop()関数を使用するだけです!。

import turtle


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


#calling for the mainloop()
turtle.mainloop()
于 2012-04-26T14:32:44.437 に答える
3

input()コードの最後に追加してみてください。

于 2012-01-23T03:36:37.673 に答える
0

これは、数回のクリックを待機し、最後のクリックで終了することを決定するまで、クリック中にスパイラルを描画します。

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()
于 2014-06-01T14:04:13.390 に答える