2017-07-20 12 views
0

私が左に移動しようとすると、私のPython turtleウィンドウがクラッシュします。私はPythonのカメのグラフィックでonkeyを使用しています。私がそれを使用しようとすると、ウィンドウが完全にクラッシュします。ここに私のコードです:onkeyイベントを使用しているときに私のPython turtleウィンドウがクラッシュする

import turtle 



wn = turtle.Screen() 
wn.bgcolor("green") 

crosshair = turtle.Turtle() 
crosshair.shape("circle") 

draw = turtle.Pen() 
draw.color("brown") 
draw.ht() 

while True: 

    def left(): 
     draw.st() 
     draw.penup() 
     draw.left(90) 
     draw.forward(50) 
     draw.pendown() 
     draw.forward(100) 
     draw.left(90) 
     draw.forward(50) 
     draw.right(90) 
     draw.forward(100) 
     draw.right(90) 
     draw.forward(100) 
     draw.right(90) 
     draw.forward(100) 
     draw.right(90) 
     draw.forward(50) 

    turtle.listen() 
    turtle.onkey(left, "Left") 

答えて

0

コードが正しく構成されていません。タートルを使用するときはループを無限にしてはいけません。while True:代わりに、onkey()のようなイベントハンドラを設定し、mainloop()を使用してTkのイベントループに制御を移す必要があります。 Pythonでは、ループ内にleft()を定義する必要はなく、トップレベルに移動します。

enter image description here

:ウィンドウ上

from turtle import Turtle, Screen 

def left(): 
    draw.st() 

    draw.penup() 
    draw.left(90) 
    draw.forward(50) 
    draw.pendown() 

    draw.forward(100) 
    draw.left(90) 

    draw.forward(50) 
    draw.right(90) 

    for _ in range(3): 
     draw.forward(100) 
     draw.right(90) 

    draw.forward(50) 

    draw.ht() 

screen = Screen() 
screen.bgcolor("green") 

crosshair = Turtle("circle") 

draw = Turtle(visible=False) 
draw.color("brown") 

screen.onkey(left, "Left") 
screen.listen() 

screen.mainloop() 

クリックして、あなたは、グラフィックスを呼び出すために、あなたの左矢印キーを使用することができ、それをアクティブにする:ここでは上記の変更が含まれるリワークです

関連する問題