2017-07-29 7 views
1

時間をかけて移動するサークルをアニメーション化しようとしていますが、Canvas.after()を使用して、円が位置を変える前に遅延を追加する方法がわかりません。誰もこれを行う方法を知っていますか?おかげさまで Python 3 tkinter:canvasグラフィックスで.after()を使う方法?

私のコード(私はなるように遅延をしたいと思い.sleep()を入れている):

from tkinter import * 
import time 
root = Tk() 

c = Canvas(root, width = 500, height = 500) 
c.pack() 

oval = c.create_oval(0, 0, 0, 0) 
for x in range(2, 50, 5): 
    time.sleep(0.1) 
    c.delete(oval) 
    oval = c.create_oval(x+50, x+50, x+50, x+50) 

答えて

2

ここにあなたのコードから派生.afterを使用しての簡単な例では、です。ご覧のとおり、.afterメソッドには指定された遅延の後に呼び出す関数が用意されている必要があるため、変更を関数にラップする必要があります。

import tkinter as tk 
root = tk.Tk() 

canvas = tk.Canvas(root, width = 500, height = 500) 
canvas.pack() 
radius = 10 
bbox = (-radius, -radius, radius, radius) 
oval = canvas.create_oval(*bbox) 

def move_oval(): 
    canvas.move(oval, 1, 1) 
    canvas.after(20, move_oval) 

# Start moving! 
move_oval() 

root.mainloop() 

あなたはもっと複雑な例を参照したい場合は、tk_orbit.pyを見てみましょう。

関連する問題