2015-01-04 165 views
0

我正在使用Tkinter(2.7)嘗試創建繪製的有限循環,然後擦除畫布窗口小部件上的矩形,就像它的閃爍一樣。經過幾天的嘗試,我可以找到,我不得不尋求幫助。Tkinter - 在畫布上創建閃爍的圖形?

問題:

下面的代碼似乎創建和刪除該程序內的矩形,但在主窗口(根)未顯示它。

from Tkinter import * 
root = Tk() 

def make(): 
    canvas.create_rectangle(20,20,60,60,fill="pink") 
    root.after(1000) 

def unmake(): 
    canvas.delete(ALL) 
    root.after(1000) 

def loop(): 
    count = 0 
    while count < 5: 
     make() 
     unmake() 
     count += 1 

canvas = Canvas(root,width=100,height=100) 
canvas.pack() 

loop() 

root.mainloop() 

事情我已經嘗試:

如果我把打印指令在make()和unmake()函數,這些打印每隔1秒,所以我知道。經過()方法加工。如果我使用調用unmake()的make()函數進行無限循環,並再次取消調用make(),則這會在主窗口(root)中顯示閃爍的矩形;

def make(): 
    box = canvas.create_rectangle(20,20,60,60,fill="pink") 
    root.after(1000,unmake) 

def unmake(): 
    canvas.delete(ALL) 
    root.after(1000,make) 

如果有人知道Tkinter爲什麼這樣做,我會非常感謝您的指導。謝謝。

回答

0

after()不會在發佈的代碼中調用任何函數。以下代碼說明了基本思想

from Tkinter import * 
root = Tk() 

def make(): 
    canvas.create_rectangle(20,20,60,60,fill="pink") 
    root.after(1000, unmake) 

def unmake(): 
    canvas.delete(ALL) 
    root.after(1000, make) 

canvas = Canvas(root,width=100,height=100) 
canvas.pack() 

make() 

root.mainloop()