我想准确了解这两个函数的功能
我刚刚开始通过一些在线课程学习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()
是“活动的”,它会捕获键盘输入并执行其必须执行的操作。我对么?或者它们实际上是如何工作的?
ExitOnClick()
功能可在用鼠标单击时关闭窗口。海龟 listen()
功能使计算机密切监听任何按键事件。欲了解更多信息,您可以访问以下文档:
https://docs.python.org/3/library/turtle.html
(我猜你正在和安吉拉一起上 100 天编程课程。)
祝你好运!
解决方案使用
,但尝试使用screen.listen()
它 工作原理完全相同,所以我想在这种情况下它们是等效的。turtle.listen()
它们是等价的,
turtle.listen()
是一个方便(初学者)的顶级海龟函数,它在单个屏幕实例上调用listen()
方法。
我想象 screen.exitonclick() 正在停止程序并且 说“好吧,你停下来直到用户点击,然后继续剩下的 节目的内容”
exitonclick()
方法为单击鼠标时退出的屏幕对象安装一个事件处理程序,并且 then 将控制权移交给 (tkinter) 事件处理程序,就像 mainloop()
一样。程序不会停止,它会“等待”事件。在这种情况下,单击鼠标时程序不会继续运行,除非完全退出。
如果 screen.listen() 处于“活动”状态,它会捕获键盘输入并
做它必须做的事。该模型只有一个窗口是屏幕上可以接收键盘输入的“活动侦听器”。
listen()
方法使海龟窗口成为“活动侦听器”,否则键盘点击对海龟窗口没有影响。没有办法放弃成为“主动监听者”,但是像
textinput()
和 numinput()
这样的屏幕方法会接管“主动监听者”的角色,这就是为什么如果你仍然想在调用它们之后必须再次调用 listener()
接收键盘输入。