2009-08-07 5 views
2

gtk.Table에서 특정 행을 강조 표시하려고합니다. 또한 다른 색상 (웹 브라우저의 링크처럼)으로 강조 표시하는 마우스 오버가 필요합니다. eventBox를 사용하여 각 셀을 포장하고 작동하는 STATE_NORMALSTATE_PRELIGHT bg 색상을 변경했지만 이벤트 상자 위로 마우스를 가져 가면 작동하지 않습니다. 더 좋은 방법이 있습니까?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) 

그것은 한 번에 각 셀을 강조, 그래서 나는 모든 것을 불이 통지 이벤트를 변경해야합니다.

편집 : 내가 EventBox 단지의 스타일을 얻을 만들

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

다음과 같이 self.rowStyle 설정됩니다.

+0

'help (gtk.EventBox.set_style)'는 나에게'set_style (...)'만을 주었고,'self.rowStyle'이 당신에게 어떤 것인지 분명하지 않습니다. 나는 비슷한 것을 이루려고 노력하고있다. (두 번째 행을 강조한다.) 나는 이것이 내 질문에 대한 거의 답이라고 생각한다.이 대답을 조금 더 자세히 설명해 주시면 고맙겠습니다. – wegenerd

+0

@swege : 업데이트 됨, 도움이됩니까? upvote면 = 너무) – Claudiu

관련 문제