Как выделить строку в таблице gtk.Table? - PullRequest
2 голосов
/ 07 августа 2009

Я хочу выделить определенные строки в gtk.Table. Я также хочу, чтобы указатель мыши выделял его другим цветом (как на ссылке в веб-браузере). Я думал о том, чтобы просто упаковать каждую ячейку с помощью EventBox и изменить цвета STATE_NORMAL и STATE_PRELIGHT bg, что работает, но наложение мыши на поле событий не работает. Есть ли лучший способ?

1 Ответ

2 голосов
/ 07 августа 2009

Это похоже на работу:

    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 только для того, чтобы получить его стиль.

...