理解海龟图形Listen和Exitonclick方法

问题描述 投票:0回答:2

我想准确了解这两个函数的功能

我刚刚开始通过一些在线课程学习Python,有一个练习需要使用turtle包从键盘上绘制东西。该解决方案使用

screen.listen()
,但尝试listen方法,效果完全相同。所以我想在这种情况下它们是等价的。代码很简单:

screen.listen()
screen.onkeypress(move_forward, key="w")
screen.onkeypress(move_backwards, key= "s")
screen.onkeypress(turn_left, key= "a")
screen.onkeypress(turn_right, key= "d")
screen.onkeypress(reset, key="space")
screen.exitonclick()

这里我就不解释所有函数的定义了。重点是:

listen()
exitonclick()
有什么作用?我的意思是,在程序中,我想象计算机逐行读取,然后遵循指令(至少在像 Python 这样的解释语言中),但在这种情况下,程序似乎正在进入一种停止状态,在该状态中它不断等待我的指示,直到我点击退出,我猜是因为
screen.exitonclick()
。例如,我想象
screen.exitonclick()
正在停止程序并说“好吧,你停下来直到用户点击,然后继续程序的其余部分”,如果
screen.listen()
是“活动的”,它会捕获键盘输入并执行其必须执行的操作。我对么?或者它们实际上是如何工作的?

python turtle-graphics
2个回答
1
投票

ExitOnClick()
功能可在用鼠标单击时关闭窗口。海龟
listen()
功能使计算机密切监听任何按键事件。欲了解更多信息,您可以访问以下文档: https://docs.python.org/3/library/turtle.html (我猜你正在和安吉拉一起上 100 天编程课程。) 祝你好运!


1
投票

解决方案使用

screen.listen()
,但尝试使用
turtle.listen()
它 工作原理完全相同,所以我想在这种情况下它们是等效的。

它们是等价的,

turtle.listen()
是一个方便(初学者)的顶级海龟函数,它在单个屏幕实例上调用
listen()
方法。

我想象 screen.exitonclick() 正在停止程序并且 说“好吧,你停下来直到用户点击,然后继续剩下的 节目的内容”

exitonclick()
方法为单击鼠标时退出的屏幕对象安装一个事件处理程序,并且 then 将控制权移交给 (tkinter) 事件处理程序,就像
mainloop()
一样。程序不会停止,它会“等待”事件。在这种情况下,单击鼠标时程序不会继续运行,除非完全退出。

如果 screen.listen() 处于“活动”状态,它会捕获键盘输入并 做它必须做的事。

该模型只有一个窗口是屏幕上可以接收键盘输入的“活动侦听器”。
listen()

方法使海龟窗口成为“活动侦听器”,否则键盘点击对海龟窗口没有影响。没有办法放弃成为“主动监听者”,但是像

textinput()
numinput()
这样的屏幕方法会接管“主动监听者”的角色,这就是为什么如果你仍然想在调用它们之后必须再次调用
listener()
接收键盘输入。
    

© www.soinside.com 2019 - 2024. All rights reserved.