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()

いや〜、今日もいい発見があってうれしいです。(笑