2017-06-01 195 views
0

私のデータベース接続のステータスを示すラベルがあります。何かが起こるたびにこのラベルのテキストを更新する必要がありますが、このラベルの色を変更したいと思います。私はupdate_idletasks()メソッドを使用していますが、色ではなくテキストのみを変更します。Python tkinter - ラベルのフォントの色を動的に変更します

self.dtbase_value = StringVar() 
    self.dtbase_color = StringVar() 
    self.dtbase_bg = StringVar() 

    self.dtbaselbl = Label(self.right_frame, textvariable = self.dtbase_value, fg = self.dtbase_color.get(), bg = self.dtbase_bg.get()).pack(side=TOP) 

これは私がアップデートと呼ぶ部分です。

self.dtbase_value.set(self.get_current_time() + ': connection established') 
    self.dtbase_color.set('SpringGreen') 
    root.update_idletasks() 

Labelコンポーネントの属性を動的に更新する方法はありますか?

+0

私は**あなたがここに括弧を削除する必要が**だと思う 'FG = self.dtbase_color.get()、BG = self.dtbase_bg.get()' – Nullman

+0

は、私はあなたがしたいと思います[ 'trace' ](http://effbot.org/tkinterbook/variable.htm)が変更され、ラベルの表示を変更するためのコールバック関数を呼び出します(今は 'None'です)。 – CommonSense

答えて

1

まず、Labelオブジェクトへの参照を取得する必要があります。あなたは「私はすでに1つ持っています、それはself.dtbaselblです」と考えているかもしれません。しかし、その値は実際にはNoneです。 Label().pack()の結果を代入しています。packは、常にNoneを返します。詳細については、Why do my Tkinter widgets get stored as None?を参照してください。

パックと別々の行に割り当てます。今、あなたは適切な参照を持っていることを

self.dtbaselbl = Label(self.right_frame, textvariable = self.dtbase_value) 
self.dtbaselbl.pack(side=TOP) 

は、あなたが.configメソッドを使用して、いつでも、色を含め、ラベルの設定オプションを設定することができます。

self.dtbase_value.set(self.get_current_time() + ': connection established') 
self.dtbaselbl.config(fg="SpringGreen") 
root.update_idletasks() 
+0

ケビンに感謝します。出来た。私は '.config'を使用しようとしていましたが、パックを調整するまで動作しませんでした。 – heliosk

関連する問題