2016-09-03 13 views
0

私は、誰かがどの色を入力した後で亀の中にどのような形をしたいのかを瞬時に確認できるようにするためにコードを書きました。基本的に、私が意味するのは、色の入力を促され、たとえば「オレンジ」と言うと、色はすぐにオレンジ色に変わります。形と色のためのPython turtleのユーザー入力

デフタートル(形状):

if shape == "triangle": 
    turtle.circle(40, steps=3) 
elif shape == "square": 
    turtle.circle(40, steps=4) 
elif shape == "pentagon": 
    turtle.circle(40, steps=5) 
elif shape == "hexagon": 
    turtle.circle(40, steps=6) 

はデフ(形状):

shape = eval(input("Enter a shape: ")) 
Turtle(shape) 

デフタートル(色):

if color == "red": 
    turtle.color("red") 
elif color == "blue": 
    turtle.color("blue") 
elif color == "green": 
    turtle.color("green") 
elif color == "yellow": 
    turtle.color("yellow") 

ここで私が書いたコードですdef色():

color = eval(input("Enter a color: ")) 
Turtle(color) 

少し動作します。 1つの変更が行われた後、色が青色に変わったら、ユーザープロンプトに入力された項目に関係なく、それ以降は何もすることを拒否します。

P.S.私はこの問題は、あなたが本当にmainloop()を使ってカメのリスナーへのコントロールの上にオンにする必要があるということであるPythonの3.5.2

答えて

1

を実行していると、あなたは、もはやトップレベルの機能は以下のように呼び出しを介して、それと通信することはできません。

color = input("Enter a color: ") 

あなたは、Python 3を使用しているので、我々は動的入力のプロンプトを表示し、現在の図面に変更を加えるために新しい入力ダイアログ機能を使用することができます。

import turtle 

current_shape = "triangle" 

steps = {"triangle": 3, "square": 4, "pentagon": 5, "hexagon": 6} 

def onkey_shape(): 
    shape = turtle.textinput("Shape Selection", "Enter a shape:") 
    if shape.lower() in steps: 
     turtle.reset() 
     set_color(current_color) 
     set_shape(shape.lower()) 
    turtle.listen() # grab focus back from dialog window 

def set_shape(shape): 
    global current_shape 
    turtle.circle(40, None, steps[shape]) 
    current_shape = shape 

current_color = "red" 

colors = {"red", "blue", "green", "yellow", "orange"} 

def onkey_color(): 
    color = turtle.textinput("Color Selection", "Enter a color:") 
    if color.lower() in colors: 
     turtle.reset() 
     set_color(color.lower()) 
     set_shape(current_shape) 
    turtle.listen() # grab focus back from dialog window 

def set_color(color): 
    global current_color 
    turtle.color(color) 
    current_color = color 

set_color(current_color) 
set_shape(current_shape) 

turtle.onkey(onkey_color, "c") 
turtle.onkey(onkey_shape, "s") 

turtle.listen() 

turtle.mainloop() 

亀ウィンドウ交流を行いますあなたが 'C'を押すと新しい色(固定セット)のダイアログが表示され、 'S'を押すとダイアログボックスが表示されます新しい形。コードでは、変更を加えて新しい図面を作成する前に、前の図を削除するのにreset()を使用します。

関連する問題