【问题标题】:Python - Turtle Stop ListeningPython - 乌龟停止倾听
【发布时间】:2016-04-28 20:12:15
【问题描述】:

正如标题中所说。是否可以在 python 的 turtle 模块中停止监听。示例:

turtle.onkey(setChar1, '1')
turtle.onkey(setChar2, '2')
turtle.onkey(setChar3, '3')
turtle.listen()

但是我可以做类似turtle.stopListen() 的事情吗?

【问题讨论】:

    标签: python turtle-graphics


    【解决方案1】:

    没有明显的unlisten() 功能,即使您下降到 tkinter 基础。我希望有人为你想出一个。

    turtle 包似乎希望你这样做的方式是:

    def keys_activate():
        turtle.onkey(setChar1, '1')
        turtle.onkey(setChar2, '2')
        turtle.onkey(setChar3, '3')
        turtle.listen()
    
    def keys_deactivate():
        turtle.onkey(None, '1')
        turtle.onkey(None, '2')
        turtle.onkey(None, '3')
    

    另一种方法是定义一个全局 listening 变量,您的密钥处理程序会检查它们是否应该处于活动状态。比如:

    from turtle import *
    
    listening = False
    
    def listen(listen_original=listen):
        global listening
        listen_original()
        listening = True
    
    def unlisten():
        global listening
        listening = False
    
    def setChar1():
        if not listening:
            return
    
        reset()
        for i in range(36):
            forward(200)
            left(170)
    
    def setChar2():
        unlisten()
    
    def setChar3():
        listen() 
    
    onkey(setChar1, '1')
    onkey(setChar2, '2')
    onkey(setChar3, '3')
    listen()
    
    done()
    

    按“1”会慢慢画出图形;再次按“1”将重置屏幕并重新开始绘制图形。按“2”将关闭该功能,因此按“1”什么也不做。按“3”将重新打开按键,因此您可以再次按“1”重新开始绘图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 2022-01-16
      相关资源
      最近更新 更多