2009-08-07 25 views
2

我想突出顯示gtk.Table中的特定行。我還希望鼠標懸停以突出顯示它具有不同的顏色(如在Web瀏覽器中的鏈接)。我想只是用一個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) 

它不僅突出在每個時間單元,所以我不得不改變通知事件照亮了一切。

編輯: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 2012-07-18 17:57:27

+0

@swege:更新,這有幫助嗎?如果願意的話,會讚賞upvote =) – Claudiu 2012-07-18 18:05:37