按下E键无法关闭Python Turtle窗口,该如何解决?
解决Turtle窗口按E键无响应的问题
你的代码问题出在这几点:
keyboard.read_key()是阻塞式调用,会卡住程序,和Turtle的事件循环冲突,导致窗口无法正常响应交互- 仅在绘图完成后做一次按键检查,不是持续监听按键操作
- 没必要依赖第三方
keyboard库,Turtle本身自带键盘事件监听功能
直接用Turtle内置的事件绑定功能就能解决,修复后的代码如下:
import turtle # 初始化绘图窗口和画笔 screen = turtle.getscreen() my_turtle = turtle.Turtle() turtle.screensize(canvwidth=600, canvheight=600, bg=None) # 定义关闭窗口的函数 def close_window(): screen.bye() # 绑定E键到关闭函数,同时让窗口监听键盘事件 screen.onkey(close_window, "e") screen.listen() # 执行绘图逻辑 my_turtle.pendown() my_turtle.backward(40) my_turtle.left(90) my_turtle.fd(100) # 启动事件循环,保持窗口运行并响应按键 screen.mainloop()
关键说明:
screen.onkey(func, key):把指定按键和处理函数绑定,按下对应键时触发函数screen.listen():让Turtle窗口获取键盘焦点,才能接收按键事件screen.mainloop():启动Turtle的事件循环,维持窗口运行并处理用户交互
注意:按下E键前要确保Turtle窗口处于激活状态(点击窗口一下),否则按键不会被识别。
内容的提问来源于stack exchange,提问作者Vedant Kulkarni
相关产品推荐
相关产品推荐

