如何在gtk.Table中突出显示一行?

时间:2009-08-07 01:59:17

标签: python colors gtk pygtk

我想突出显示gtk.Table中的特定行。我还想要鼠标悬停以使用不同的颜色突出显示它(例如在Web浏览器中的链接上)。我想到只使用eventBox打包每个单元格并更改STATE_NORMALSTATE_PRELIGHT bg颜色,这确实有效,但鼠标悬停在事件框上不起作用。还有更好的方法吗?

1 个答案:

答案 0 :(得分: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只是为了得到它的风格。