2016-10-05 207 views
0

我想動畫的畫布項目WITHOUT(!!!)canvas.move()函數。Tkinter動畫沒有canvas.move()

例如,我嘗試這樣做:

見下圖: 座標爲已知的

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方法獲取和更改畫布對象的座標。

下面是一個像素生長在X方向的橢圓每100ms一個完整的例子:

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