2016-01-22 7 views
7

gtk.EventBoxのハイライトカラーを変更しようとしています。それは特定の背景色を持っており、その補色でその周囲に線を描きたいと思います。私はdrag_highlightを見つけました。これはウィジェットの周りに線を引いていますが、色を変更する方法はわかりません。常に黒です。何か案は? EventBox周りのラインを作るためにPygtk color for drag_highlight

+0

おそらく、このための独自のコードを記述するつもり必要。 'drag_highlight'のドキュメントでは' expose_event'と 'draw'ハンドラに接続していますので、同じことをしてからこれらのイベントが発生したときにスタイル(または境界)を更新してください。 – B8vrede

答えて

4

Frameまたは別のEventBoxにそれを置くことが可能である(この場合には、「国境」の幅を設定することが可能である)、ここではそれがどのように見えるかです:

enter image description here

そしてここでコードがある(それはmodified EventBox exampleです):

#!/usr/bin/env python 

# example eventbox.py 

import pygtk 
pygtk.require('2.0') 
import gtk 

class EventBoxExample: 
    def __init__(self): 
     window = gtk.Window(gtk.WINDOW_TOPLEVEL) 
     window.set_title("Event Box") 
     window.connect("destroy", lambda w: gtk.main_quit()) 
     window.set_border_width(10) 

     # Create an EventBox and add it to our toplevel window 
     frame = gtk.EventBox() # gtk.Frame() 
     window.add(frame) 
     frame.show() 
     frame.set_border_width(2) 
     frame.modify_bg(gtk.STATE_NORMAL, 
          frame.get_colormap().alloc_color("blue")) 

     event_box = gtk.EventBox() 
     frame.add(event_box) 
     event_box.set_border_width(10) 
     event_box.show() 

     # Create a long label 
     label = gtk.Label("Click here to quit, quit, quit, quit, quit") 
     event_box.add(label) 
     label.show() 

     # Clip it short. 
     label.set_size_request(110, 20) 

     # And bind an action to it 
     event_box.set_events(gtk.gdk.BUTTON_PRESS_MASK) 
     event_box.connect("button_press_event", lambda w,e: gtk.main_quit()) 

     # More things you need an X window for ... 
     event_box.realize() 
     event_box.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.HAND1)) 

     # Set background color to green 
     event_box.modify_bg(gtk.STATE_NORMAL, 
          event_box.get_colormap().alloc_color("green")) 

     window.show() 

def main(): 
    gtk.main() 
    return 0 

if __name__ == "__main__": 
    EventBoxExample() 
    main() 
+1

これはうまくいきますが、私は賞金を授与しません。なぜなら、EventBoxのために別の親を必要としない答えを得たいからです。私は今あなたの答えを受け入れるので、必ずしも満了時に賞金を授与することを覚えておく必要はありません。 – zondo