Turtle给出错误:AttributeError:“Turtle”对象没有属性“onkeyrelease”

2024-10-01 13:27:41 发布

您现在位置:Python中文网/ 问答频道 /正文

每次释放密钥时,我都会尝试添加1:

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

进口乌龟。。。在

^{pr2}$

定义了释放键1时要运行的函数

turtle.onkeyrelease(onaclicked, "1")

由于某些原因,onkeyrelease不存在,即使我导入了Turtle并签入了Python文档。它应该有用,不是吗?我是不是进口不当?你能帮帮我吗?在

我想要它是onkeyrelease而不是onkey,因为它是为了游戏。使用onkey,当你用手指按住键时,它每大约0.25秒增加1的电流瓦特。你可以在钥匙上放些东西来作弊,所以我只想在你释放钥匙的时候加1。在


Tags: fromimportfalse定义密钥screen钥匙turtle
1条回答
网友
1楼 · 发布于 2024-10-01 13:27:41

你的代码有几个问题:你用两种不同的方式导入turtle,这会混淆事情;onkeyrelease()实际上是屏幕/窗口的一种方法,而不是turtle;你没有调用允许处理击键的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,我从您收到的错误消息中怀疑这一点,那么将python3别名onkeyrelease替换为onkey

The method Screen.onkeypress() has been added as a complement to Screen.onkey() which in fact binds actions to the keyrelease event. Accordingly the latter has got an alias: Screen.onkeyrelease().

此更改在两个版本中的作用应该相同。用onkeyrelease代替onkey并不能解决关键问题。在

when you hold your finger on the key, it adds 1 to currentWatts every around 0.25 seconds. You could cheat by placing something on the key so I want it only to add 1 when you release

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

相关问题 更多 >