2009-08-07 6 views
2

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

ответ

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) 

Это только подчеркивает каждую ячейку в то время, так что я должен буду изменить уведомлению события, чтобы осветить все.

EDIT: 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 только, чтобы получить свой стиль.

+0

'help (gtk.EventBox.set_style)' дает мне только 'set_style (...)', и неясно, что такое 'self.rowStyle' в вашем случае. Я пытаюсь добиться чего-то подобного (выделите каждую вторую строку), и я думаю, это почти ответ на мой вопрос, я был бы признателен, если бы вы уточнили этот ответ немного больше. – wegenerd

+0

@swege: обновлено, это помогает? оценил бы upvote, если бы так =) – Claudiu

Смежные вопросы