2016-10-05 10 views
0

canvas項目をcanvas.move()関数なしでアニメーション化したいと思います。canvas.move()を使わないTkinterアニメーション

は、以下を参照してください:

は例えば、私はこれを試してみました COORDSは

def getCoords(i): 
    .... 
    return coords #a list 

for i in range(4): 
    id=canvas.create_oval(getCoords(i)) 
    canvas.after(1000) 
    canvas.delete(id) 
    canvas.update() 

それはこのように動作しませんが知られています。 どうしたのですか?および/または 例はどこにありますか?

+1

なぜあなたは、特にオブジェクトを移動するように設計されて一つの機能を使用したくありませんか? –

+1

あなたが間違っていることについては、楕円形を作成していて、プログラムをスリープ状態にしてscreen_を更新せずに楕円を削除することになります。 –

+0

理由:coords = [x1、y1、x2、y2]の行をアニメートしますが、x2のみが変化します。 (例えば、ロボット工学におけるプリズムジョイントの場合)。 – user3421954

答えて

0

coordsメソッドを使用してキャンバスオブジェクトの座標を取得したり変更したりすることができます。ここで

は、1つの画素ごとに100ミリ秒をx方向に楕円形に成長し、完全な例です:

import Tkinter as tk 

def grow(canvas, item): 
    (x1,y1,x2,y2) = canvas.coords(item) 
    new_coords = (x1, y1, x2+1, y2) 
    canvas.coords(item, new_coords) 
    root.after(100, grow, canvas, item) 

root = tk.Tk() 
canvas = tk.Canvas(root) 
canvas.pack(side="top", fill="both", expand=True) 

item = canvas.create_oval(10, 10, 100, 100, outline="black", fill="red") 
grow(canvas, item) 

root.mainloop() 
+0

ブライアンありがとうございます。 – user3421954

関連する問題