2017-03-02 46 views
0

所以我之前問過類似的問題,但我沒有真正得到任何答覆,所以這是一個關於評論的後續問題......代碼在下面,我不知道如何停止從每個重疊的文本其他,我試圖刪除它之前創建一個新的文本,但它只是返回一個關於座標不正確的錯誤,所以我懷疑這是解決方案。有人可以幫忙嗎?更改現有文本項目的文本而不必創建新文本項目? Tkinter

fuel = 20 
# What happens when you click the space bar 
def space(evt): 
    # Creates text that tells you the velocity and decreases velocity 
    global vy, g, dt, fuel 
    f=('Times',36,'bold') 
    txt=canvas.create_text(w-100,50, 
    text=str(fuel),font=f,fill='white') 
    if(fuel<0): return 
    fuel -= 1 
    canvas.delete(txt) 
    canvas.create_text(txt, text=str(fuel)) 
    vy -= 3*g*dt  
# If space key pressed, the function space happens 
root.bind('<space>',space) 

謝謝!

回答

2

在你的方法中,你正在創建兩次文本。

你的第一個電話後,已經有通過

canvas.create_text(txt, text=str(fuel)) 

如果space方法被再次調用,您將創建一個額外的一個,這將繼續下去對每個調用創建一個文本項。

不是每次刪除創建文本,都可以在全局範圍內創建單個文本項目,然後使用canvas.itemconfig()方法更改其文本值。

txt=canvas.create_text(w-100, 50, text=str(fuel), font=f, fill='white') 
def space(evt): 
    ... 
    ... 
    canvas.itemconfig(txt, text=str(fuel)) 
+0

非常感謝你解決了這個問題! –