2017-11-04 2 views
0

私は、ユーザーがウィンドウをクリックすると、選択した入力に基づいて図形を描画するようにコードを作成しています。私はどこにウィンドウとカメを正しく割り当てるべきか、そして現在のウィンドウを終了する方法を関数に割り当てる方法に問題があります。 mainloop()を終了する方法はありますか?そのため、ユーザーは選択した数のシェイプをクリックして作成した後にメインメニューに戻ります(オプションを選択するたびにウィンドウが空白にリセットされる)。無制限のクリックが不可能な場合は、それを行う方法はありますか?クリックは1回だけです(メインメニューに戻ります)。簡単にするために、私は他のコードが同じであるため、1つのオプションしか含めませんでした。ユーザーがメインメニューに戻るようにPythonのカメの描画を終了

import turtle 
    window = turtle.Screen() 
    turt = turtle.Turtle() 

    def U(x,y): 
     turt.penup() 
     turt.setposition(x,y) 
     turt.pendown() 
     for x in range(4): 
      turt.forward(100) 
      turt.right(90) 
     return 

    def main(): 
     global choice 
     if choice.upper() == "U": 
      window.onscreenclick(U) 
      window.mainloop() 

    run = True 
    print("Please choose a drawing option: 'U' or 'q' to quit.") 
    while run == True: 
     choice = str(input()) 
     if choice.upper() != "U" and choice.lower() != "q": 
      print("Invalid input. Please choose either: 'U' or 'q'.") 
     elif choice.upper() == "U": 
      main() 
     elif choice.lower() == 'q': 
      run = False 

答えて

0

コントロールロジックに欠陥があります。タートルグラフィックスはイベント駆動型の世界なので、イベントロジックを配置し、キーボードとマウスのイベントを監視するために制御をmainloop()にする必要があります。このモデルにはwhile Trueinput()のようなコードが含まれています。ここではPython 3に道をイベント駆動で動作するようにあなたのコードの私のリワークだ:それは

from turtle import Turtle, Screen 

TITLE = 'Drawing Options' 
PROMPT = "Please choose a drawing option: 'U' or 'q' to quit." 

def U(x, y): 
    window.onscreenclick(None) 

    turtle.penup() 
    turtle.setposition(x, y) 
    turtle.pendown() 

    for _ in range(4): 
     turtle.forward(100) 
     turtle.right(90) 

def menu(): 
    choice = '' 
    while choice not in ['U', 'u', 'Q', 'q']: 
     choice = window.textinput(TITLE, PROMPT) # may return None 

    if choice.upper() == 'U': 
     window.onscreenclick(U) 
    elif choice.lower() == 'q': 
     window.bye() 

    window.listen() # textinput() unsets this so redo 

turtle = Turtle() 
window = Screen() 

window.onkey(menu, key='M') 
window.listen() 

window.mainloop() 

を実行し、そのリスナーにするウィンドウを選択し、その後、どこプロンプトウィンドウを起動するために「M」の首都を襲いましたあなたの 'U'または 'q'コマンドを入力することができます。 'U'コマンドの後にマウスで任意の場所をクリックすると、正方形で位置を設定できます。これが完了したら、大文字「M」を入力してメニューを表示し、別の四角形を配置するか終了します。

わかりやすくするために、ウィンドウを空白の状態にリセットしませんでした。

関連する問題