Turtle出错:AttributeError:'Turtle'对象没有属性'onkeyrelease'

时间:2017-06-03 14:43:46

标签: python turtle-graphics

我每次发布密钥时都会尝试添加1:

from turtle import *
import turtle
turtle1 = Turtle()
screen = turtle1.getscreen()
goPressed = False

进口龟......

currentWatts=0

def onaclicked():
     global currentWatts
     currentWatts+=1
     print (currentWatts)

定义了我的函数,当密钥:1,被释放时运行

turtle.onkeyrelease(onaclicked, "1")

由于某些原因onkeyrelease即使我导入了Turtle并在Python文档中签入,也不存在onkeyrelease。它应该工作,不应该吗?我不正确地导入了吗?你能帮我吗?

我希望它为onkey而不是onkey的原因是因为它适用于游戏。使用groupby时,当您将手指放在键上时,它会在0.25秒内向currentWatts添加1。您可以通过在键上放置一些东西来作弊,所以我只想在释放键时添加1。

1 个答案:

答案 0 :(得分:1)

你的代码有几个问题:你用两种不同的方式导入龟,这会混淆你的东西; onkeyrelease()实际上是一个屏幕/窗口的方法,而不是乌龟;你没有调用允许处理击键的listen()。以下内容适用于Python 3:

from turtle import Turtle, Screen, mainloop

def onaclicked():
    global currentWatts
    currentWatts += 1
    print(currentWatts)

currentWatts = 0

screen = Screen()

screen.onkeyrelease(onaclicked, "1")

screen.listen()

mainloop()

确保在开始输入之前单击窗口一次以使其激活。

如果您使用的是Python 2,我怀疑您收到的错误消息,请将Python 3别名onkeyrelease替换为onkey

  

添加了Screen.onkeypress()方法作为补充   Screen.onkey()实际上将动作绑定到keyrelease事件。   因此后者有一个别名:Screen.onkeyrelease()。

这两个版本的更改应该相同。使用onkeyrelease代替onkey并不能解决您在关键问题上的责任。

  

当你用手指按住键时,它会加1   currentWatts每0.25秒左右。你可以通过放置作弊   键上的东西所以我希望它只在您发布时添加1

自动密钥重复似乎由操作系统处理,可能需要在Python外部禁用,具体取决于操作系统。一些示例链接: