Sto provando a cambiare il colore di evidenziazione per un gtk.EventBox
. Ha un certo colore di sfondo e voglio tracciare una linea attorno ad esso con il suo colore complementare. Ho trovato drag_highlight
, che disegna una linea attorno al widget, ma non ho capito come cambiare il colore: è sempre nero. Qualche idea?Colore Pygtk per drag_highlight
7
A
risposta
4
Per rendere la linea intorno alla EventBox
, è possibile metterlo in Frame
o in un altro EventBox
(in questo caso è possibile impostare la larghezza del "confine"), qui è come appare:
E qui è il codice (si tratta di un 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
Funziona alla grande, ma non premierò ancora la taglia perché mi piacerebbe avere una risposta che non richieda un altro genitore per EventBox. Accetto la tua risposta per ora, così che non ho necessariamente bisogno di ricordarti di assegnarti la taglia alla sua scadenza. – zondo
probabilmente andando necessità di scrivere il proprio codice per questo. Nel doc per 'drag_highlight' menziona che si connette ai gestori' expose_event' e 'draw', quindi se fai lo stesso e aggiorna lo stile (o il bordo) quando accadono questi eventi. – B8vrede