如何在单击一次后停止 onscreenclick()

How to stop onscreenclick() after only one click

如何在单击一次后停止onscreenclick(function)(只执行一次函数)?

我想重复输入颜色,只执行一次 'drawShape',然后再次恢复颜色输入。

from turtle import*

def drawShape(x,y):    
    pensize(50)
    up()
    goto(x,y)
    down()
    goto(x,y-25)

while(1):
    color=input("input color (turn off: a)")
    if color =="a":
        break
    elif color=='red':
        pencolor("red")
        onscreenclick(drawShape)
        mainloop()
   elif color=='green':
       pencolor("green")
       onscreenclick(drawShape)
       mainloop()
   else:
       print("worng input")

print("End")

简短的回答是您可以在 drawShape() 的开头使用 onscreenclick(None) 来关闭进一步的点击,直到用户响应启用。

具有各种样式更改的完整解决方案:

from turtle import Turtle, Screen

def drawShape(x, y):
    screen.onscreenclick(None)

    turtle.penup()
    turtle.goto(x, y)
    turtle.down()
    turtle.sety(y - 25)

screen = Screen()

turtle = Turtle()
turtle.pensize(50)

while True:
    color = input("Input color (turn off = a): ")

    if color == 'a':
        break

    if color in ['red', 'green']:
        turtle.pencolor(color)
        screen.onscreenclick(drawShape)
    else:
        print("Wrong input")

print("End")
screen.exitonclick()