2

の特定の行を強調表示したいgtk.Table。また、マウスオーバーで別の色で強調表示したい(Webブラウザーのリンクのように)。各セルに eventBox を詰め込み、STATE_NORMALbgのSTATE_PRELIGHT色を変更するだけでうまくいくと思いましたが、イベントボックスにマウスを合わせるとうまくいきません。より良い方法はありますか?

4

1 に答える 1

2

これはうまくいくようです:

    def attach(w,c1,c2,r1,r2):
        eb = gtk.EventBox()
        a = gtk.Alignment(xalign=0.0,yalign=0.5)
        a.add(w)
        eb.add(a)
        eb.set_style(self.rowStyle)
        def ene(eb,ev):
            eb.set_state(gtk.STATE_PRELIGHT)
        def lne(eb,ev):
            eb.set_state(gtk.STATE_NORMAL)
        eb.connect('enter-notify-event', ene)
        eb.connect('leave-notify-event', lne)

        self.table.attach(eb, c1, c2, r1, r2,
                          xoptions=gtk.EXPAND|gtk.FILL,
                          yoptions=gtk.SHRINK)

一度に各セルが強調表示されるだけなので、通知イベントを変更してすべてを点灯させる必要があります。

編集:self.rowStyle次のように設定されています:

tmpeb = gtk.EventBox()
st = tmpeb.get_style().copy()
st.bg[gtk.STATE_PRELIGHT] = gtk.gdk.Color(65535,65535,0)
self.rowStyle = st

EventBoxそのスタイルを取得するためだけに作成します。

于 2009-08-07T02:05:18.470 に答える