私は pygtk コンボボックスに焦点を当てる方法を見つけようとしています。目標は、フォーカスされたときにコンボボックスの色を変更し、フォーカスがコンボボックスを離れたときに元に戻すことです。「focus_out_event」を使用してみましたが、これはコンボボックスでは機能しないようです。この問題に対する回答を広範囲に検索しましたが、これは gtk+ のバグである可能性があります??
私がこれまでに思いついた解決策は...
私は4つの別々のコンボボックスのcb0 - cb3を持っています。私はそれらを同じ方法に接続しました...
self.cb0.connect("focus", self.focus)
メソッドでは、状態と色を変更します...
def focus(self, widget, direction):
if widget.get_state() == gtk.STATE_NORMAL:
widget.set_state(gtk.STATE_SELECTED)
widget.modify_base(gtk.STATE_SELECTED, gtk.gdk.Color("#99CCFF"))
else:
widget.set_state(gtk.STATE_NORMAL)
widget.modify_base(gtk.STATE_NORMAL, gtk.gdk.Color("#FFFFFF"))
これにより、キーボードでタブ移動するときに目的の効果が得られます。しかし、コンボ ボックスをマウスでクリックすると、望ましくない結果が得られます。現在、マウスのクリックを追跡する方法を探しています。
特定のコンボ ボックスがクリックされたときにチェックするシグナルまたはメソッドが見つからないようです。「grab_notify」シグナルを使用すると、4 つのコンボ ボックスすべてにシグナルが送信されます (したがって、すべてのボックスのベース カラーが一度に変更されます)。
これは、私の時間がかかりすぎてイライラする問題でした。簡単な解決策があるはずです。