2016-10-13 16 views
0

私はどのようにしてプログラムを作ることができますか?プログラム内のどのボタンも暗くなっているので、ボタンはある背景色(白)を1秒間取得します。ボタンが沈んだときに色を変えるTkinter

私はこのような何かを考えていた:

たびButtonClicked =サンケン、ButtonClickedは[「BG」] =「白」しかし、私はボタンがたくさんある1秒

ため、すべてのボタンがあり異なる機能。だから、これはすべてのボタンに起こるので、プログラムを実装するのは簡単ですか?

答えて

1

最も簡単な解決策は、独自のカスタムボタンクラスを作成し、そのクラスにビヘイビアを追加することです。

afterを使用すると、一定の時間が経過しても色が復元されるように設定できます。例えば

class CustomButton(tk.Button): 
    def __init__(self, *args, **kwargs): 
     self.altcolor = kwargs.pop("altcolor", "pink") 
     tk.Button.__init__(self, *args, **kwargs) 
     self.bind("<ButtonPress>", self.twinkle) 

    def twinkle(self, event): 
     # get the current activebackground... 
     bg = self.cget("activebackground") 

     # change it ... 
     self.configure(activebackground=self.altcolor) 

     # and then restore it after a second 
     self.after(1000, lambda: self.configure(activebackground=bg)) 

あなたは他のあらゆるButtonのようにそれを使用します。新たに1つの新しい引数であるaltcolorが使用されます。これは使用する余分な色です:

b1 = CustomButton(root, text="Click me!", altcolor="pink") 
b2 = CustomButton(root, text="No, Click me!", altcolor="blue") 
+0

素晴らしい解決策!私は次回にkwargs.pop()メソッドを覚えておく必要があります – scotty3785

+0

ありがとう!魅力的な作品! – DowinskiField

関連する問題