class ClickableLabel(Widget): """This is like a label and reimplements many of the Label things, but it's an EventBox with a Label child widget. """ def __init__(self, text, size=0.77, color=WHITE): Widget.__init__(self) self.set_widget(gtk.EventBox()) self.label = Label(text) self._widget.add(self.label._widget) self.label._widget.show() self._widget.set_above_child(False) self._widget.set_visible_window(False) self.set_size(size) self.set_color(color) self.wrapped_widget_connect("button-release-event", self.on_click) self.wrapped_widget_connect("enter-notify-event", self.on_enter_notify) self.wrapped_widget_connect("leave-notify-event", self.on_leave_notify) self.wrapped_widget_connect("unmap", self.on_unmap) self.create_signal("clicked") def on_click(self, widget, event): self.emit("clicked") return True def on_enter_notify(self, widget, event): self._widget.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.HAND1)) def on_leave_notify(self, widget, event): if self._widget.window: self._widget.window.set_cursor(None) def on_unmap(self, widget): if self._widget.window: self._widget.window.set_cursor(None) def set_size(self, size): self.label.set_size(size) def set_color(self, color): self.label.set_color(color) def set_text(self, text): self.label.set_text(text) def hide(self): self.label._widget.hide() def show(self): self.label._widget.show()
class ClickableLabel(Widget): """This is like a label and reimplements many of the Label things, but it's an EventBox with a Label child widget. """ def __init__(self, text, size=0.77, color=WHITE): Widget.__init__(self) self.set_widget(gtk.EventBox()) self.label = Label(text) self._widget.add(self.label._widget) self.label._widget.show() self._widget.set_above_child(False) self._widget.set_visible_window(False) self.set_size(size) self.set_color(color) self.wrapped_widget_connect('button-release-event', self.on_click) self.wrapped_widget_connect('enter-notify-event', self.on_enter_notify) self.wrapped_widget_connect('leave-notify-event', self.on_leave_notify) self.wrapped_widget_connect('unmap', self.on_unmap) self.create_signal('clicked') def on_click(self, widget, event): self.emit('clicked') return True def on_enter_notify(self, widget, event): self._widget.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.HAND1)) def on_leave_notify(self, widget, event): if self._widget.window: self._widget.window.set_cursor(None) def on_unmap(self, widget): if self._widget.window: self._widget.window.set_cursor(None) def set_size(self, size): self.label.set_size(size) def set_color(self, color): self.label.set_color(color) def set_text(self, text): self.label.set_text(text) def hide(self): self.label._widget.hide() def show(self): self.label._widget.show()