如何在单击一次后停止 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()
如何在单击一次后停止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()