【问题标题】:How to stop onscreenclick() after only one click如何在单击后停止 onscreenclick()
【发布时间】:2020-11-17 18:12:24
【问题描述】:

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

【问题讨论】:

    标签: python turtle-graphics python-turtle


    【解决方案1】:

    简短的回答是您可以在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()
    

    【讨论】:

    • 感谢您的回答。我可以保留从所有时间 drawShape 绘制的线条吗?比如我第一次输入第一种颜色,执行drawShape(并且不关闭turtle page),第二次继续,输入颜色,执行drawShape,在第一次drawShape的turtle页面中仍然存在。
    • @Jungpago,我提供的示例不是这样吗?如果没有,您需要澄清您要做什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    相关资源
    最近更新 更多