Python 2.7 turtle onkey事件导致循环?

时间:2018-04-28 19:54:59

标签: python python-2.7 turtle-graphics

from turtle import *
def PleaseStop():
 SomeWord = input("Which word?")
Screen().onkey(PleaseStop,"a")
Screen().listen()

按" a"将使程序问"哪个词?"永远。

除了关闭程序之外,没办法阻止它。如何让onkey仅调用一次该函数?

2 个答案:

答案 0 :(得分:0)

您需要通过calling onkey with None as first parameter删除事件绑定:

import turtle

def OnKeyA():
    print 'Key "a" was pressed'
    turtle.Screen().onkey(None, 'a')

turtle.Screen().onkey(OnKeyA, 'a')
turtle.Screen().listen()
turtle.mainloop()

答案 1 :(得分:0)

  

不能解决问题。两种方法都可以打印,输入()是   永远重复,即使没有重复。

我相信@Acorn正在朝着正确的方向前进,但提供的示例并不完整。我觉得这是一个更完整的解决方案:

from turtle import Turtle, Screen, mainloop

def OnKeyA():
    screen.onkey(None, 'a')
    some_word = raw_input("Which word? ")
    turtle.write(some_word, font=('Arial', 18, 'normal'))

screen = Screen()
turtle = Turtle()

screen.onkey(OnKeyA, 'a')
print("Click on turtle window to make it active, then type 'a'")

screen.listen()
mainloop()

请注意,这种方法很尴尬,单击“乌龟图形”窗口使其处于活动状态,然后单击“ a”,然后返回到控制台窗口以键入您的单词。如果/当您使用Python 3时,可以使用乌龟函数textinput()来提示用户输入文本,而不必从控制台使用input()