我每次释放按键时都会尝试添加 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")
出于某种原因,即使我导入了 Turtle 并检查了 Python 文档,
onkeyrelease
也不存在。它应该有效,不是吗?是我导入不当吗?你能帮我吗?
我希望它是
onkeyrelease
而不是onkey
的原因是因为它是一个游戏。使用 onkey
时,当您将手指按住按键时,电流瓦数大约每 0.25 秒增加 1。你可以通过在按键上放置一些东西来作弊,所以我希望它只在你释放按键时加 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 每大约 0.25 秒一次电流瓦特。你可以通过放置来作弊 按键上有一些东西,所以我希望它只在你松开时加 1
自动按键重复似乎是由操作系统处理的,可能需要在 Python 外部禁用,具体取决于操作系统。一些示例链接: