2017-03-02 3 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

この方法では、テキストを2回作成しています。

あなたの最初の呼び出しの後、spaceメソッドが再び呼び出された場合

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

で作成されたテキスト項目がすでに存在している、あなたは余分なものを作成し、これが各呼び出しのために続けるだろう。

テキストを毎回削除する代わりに、グローバルスコープで1つのテキスト項目を作成し、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

この問題を解決していただきありがとうございます。 –

関連する問題