0

Tkinter (2.7) を使用して、キャンバス ウィジェットの四角形を描画してから、その点滅のように消去する有限ループを作成しようとしています。見つけたすべてのものを数日間試した後、助けを求めなければなりません。

問題:

以下のコードは、プログラム内で四角形を作成および削除するようですが、メイン ウィンドウ (ルート) には表示されません。

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 秒間隔で印刷されるため、.after() メソッドが機能していることがわかります。

make() 関数で unmake() を呼び出し、unmake で再度 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がこのように振る舞う理由を誰かが知っていれば、私はガイダンスに非常に感謝しています. ありがとう。

4

1 に答える 1