PyGTK覚書 WidgetのSyleを元にもどす
たとえば、gtk.Frameのスタイルを以下のように変更したとします。
(1) self.frameSelStyle = self.frame.get_style().copy() newColor = self.frame.get_colormap().alloc_color(65000, 0, 0) self.frameSelStyle.bg[gtk.STATE_NORMAL] = newColor
上記を実行すると、gtk.Frameのノーマル状態の色が赤く変化します。
ここまでは問題ないのですが、変化した状態をもとの状態に戻すのに苦労しました。
まず、試したのは、上記スクリプトが実行される前に
(2) self.frameOrgStyle = self.frame.get_style()
などとして、オリジナルのスタイルを退避しておく方法でした。
一見、この方法でもうまくいっているように見えるのですが、画像を多用しているようなテーマを使っている場合には、正しく復帰させることができません。
いろいろ調べたり試したりした結果、以下の方法でうまくいきました。
(2)のスクリプトと同じで、あらかじめスタイルを退避しているのですが、退避する情報が違っています。
(3) self.frameOrgStyle = self.frame.rc_get_style()
いや〜、今日もいい発見があってうれしいです。(笑