2017-04-13 13 views
1

ウィンドウが開始された後、tkinterの色が変化して円を描こうとしています。私はat this質問を見て、私は変数を述べた後に色を変更する方法を知っています。私は交通信号を作ろうとしています(私が見た質問の人によく似ています)が、画面が表示されたら色の変更を更新することはできません。これは私がこれまでtkinterの開始後にオブジェクトの色を変更する

root = tk.Tk() 
canvas = tk.Canvas(root) 
light_1 = canvas.create_oval(*coordinates here*, fill='green') 
root.mainloop() 

を持っており、色はcanvas.itemconfig(light_1, fill='blue')

使用変更し、その後root.mainloop() iは色を変更後に達しただけされているので、私はちょうどtime.sleep(1)を行うことができないものです。それが視覚的にフィードバックを返すことはありません

+0

ユーザーメソッド 'root.after(1000年、FOO)'の代わりに 'time.sleep':ソリューションは、afterメソッドを使用してのTkinterのメインループにコードを追加することですか?または、ボタンにその機能を実行させる。 (時間はミリ秒であることに注意してください) – arrethra

答えて

3

time.sleep()は、tkinterのメインループが実行されないようにするため、tkinterコードのどこにでも使用できません。

def change_color(): 
    canvas.itemconfig(light_1, fill='blue') 

root = tk.Tk() 
canvas = tk.Canvas(root) 
light_1 = canvas.create_oval(*coordinates here*, fill='green') 
root.after(1000, change_color) # 'after' uses milliseconds, so 1,000 = 1 second 
root.mainloop() 
+0

これは私が探していた正確なもののようです。私は今それをテストすることができませんが、私はそれが動作すると確信しています!ありがとう! – Goalieman

関連する問題