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