2016-06-21 9 views
0

Python beginner here。
私はPythonで一連の色を表示する方法が必要ですが、私はTkinterで色を選択しました。
ボタンをクリックして背景色を変更することができましたが、複数の変更を行うと、最後のものだけがレンダリングされます。tkinterの背景色を連続的に変更する方法

これはTkinter自体の問題ではありませんが、Python自体が関数を処理する方法についてはほとんど分かりますが、これはすでにここですでに説明していますが、初心者としては何を探すべきかわかりません。適切なキーワードがあれば十分だろう。

from Tkinter import * 
import time 
class App: 
    def __init__(self, master): 
     self.slogan = Button(command=self.change) 
     self.slogan.pack() 

    def change(self): 
     self.slogan.configure(bg = 'red') 
     time.sleep(1) 
     self.slogan.configure(bg = 'blue') 

root = Tk() 
app = App(root) 
root.mainloop() 

このコードは、上の代わりに、それだけで青に色が変化し、青に色を待ち、変更、赤に色を変更する]をクリックすることになっています。

time.sleep(1) 

はGUIプログラムで寝ることはありません:

答えて

2

はここにあなたの問題です。メインループが何もしないようにする(つまり、グラフィックスを更新する)。 guiをフリーズし、1秒間も応答を与えません。代わりに

、2つのコールバックにそれを分離し、そしてアフターすなわちと他の最初のスケジュールを持っている:

def change(self): 
    self.slogan.configure(bg='red') 
    self.slogan.after(1000, # milliseconds 
         self.change_back) 

def change_back(self): 
    self.slogan.configure(bg='blue') 

をまた、あなたのアプリケーションは、おそらくボタンにマスターを渡す必要があります(Button(master, command=self.change))および/またはTkinter.Frameからサブクラス化し、その中にボタンをパックする必要があります。

関連する問題