2015-01-04 4 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() 

것들 나는 시도했다 : 나는 메이크업 (에서 인쇄 명령을 넣으면

) 1 개 초 간격으로이 프린트 기능) (망치다, 그래서 난 후론() 메소드는 알고 일.

make() 함수로 unmake()를 호출하고 make()를 다시 호출하면 make가 무한 루프를 반복하면 기본 창 (루트)에 깜박이는 사각형이 표시됩니다.

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() 
관련 문제