2017-06-03 51 views
0

我試圖加1我每次釋放鍵的屬性:龜給出錯誤:AttributeError的:「海龜」對象有「onkeyrelease」

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時,當您將手指放在按鍵上時,每0.25秒左右就會在currentWatts上加1。你可以通過在密鑰上放置某些東西來作弊,所以我只希望它在你釋放密鑰時加1。

+0

嘗試'turtle1.onkeyrelease(onaclicked, 「1」)'。我並不熟悉Turtle類,所以我不知道它是如何被特別使用的,但它看起來像你製作了一個龜對象,並且想要使用它的一個方法,所以引用你的turtle1而不是turtle類。 –

+0

@DavyM,OP使用'turtle'不是烏龜類,而是烏龜庫,實際上在給定導入語句的情況下是有效的。使用'turtle1'而不是簡單的錯誤。這個問題可能是Python 2的使用,它不包含'onkeyrelease'別名。 – cdlane

+0

@cdlane哦,好的,謝謝。這就是爲什麼我將它作爲評論的原因,因爲它看起來像是一個對象問題,但由於我對「烏龜」知之甚少,甚至沒有認識到它是一個圖書館而不是一個班級文件,所以我知道我可能完全脫離了基地。我很高興你能給出一個完整的答案。 –

回答

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,這是我從你得到了錯誤信息懷疑,然後用onkey取代了Python 3別名onkeyrelease

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,這取決於在OS上。一些示例鏈接:

+0

好的。那麼,當我剛纔嘗試時,它說屏幕沒有屬性onkeyrelease。爲什麼會這樣?我有最新版本的python @cdlane – Cedric

+0

'screen.onkeypress'不工作,同樣的錯誤 – Cedric

+0

@Cedric,我複製了上面的代碼並將其粘貼到一個文件中 - 它在Python 3中運行良好,並生成一個「沒有屬性'onkeyrelease'「在Python 2中的錯誤,正如我所說的那樣。用'--version'調用你的Python並告訴我們你得到了什麼。 – cdlane