:right-sidebar: True WidgetPaintable =================================================================== .. currentmodule:: gi.repository.Gtk .. class:: WidgetPaintable(**properties: ~typing.Any) :no-contents-entry: Superclasses: :class:`~gi.repository.GObject.Object` Implemented Interfaces: :class:`~gi.repository.Gdk.Paintable` ``GtkWidgetPaintable`` is a ``GdkPaintable`` that displays the contents of a widget. ``GtkWidgetPaintable`` will also take care of the widget not being in a state where it can be drawn (like when it isn't shown) and just draw nothing or where it does not have a size (like when it is hidden) and report no size in that case. Of course, ``GtkWidgetPaintable`` allows you to monitor widgets for size changes by emitting the :obj:`~gi.repository.Gdk.Paintable.signals.invalidate_size` signal whenever the size of the widget changes as well as for visual changes by emitting the :obj:`~gi.repository.Gdk.Paintable.signals.invalidate_contents` signal whenever the widget changes. You can use a ``GtkWidgetPaintable`` everywhere a ``GdkPaintable`` is allowed, including using it on a ``GtkPicture`` (or one of its parents) that it was set on itself via :func:`~gi.repository.Gtk.Picture.set_paintable`. The paintable will take care of recursion when this happens. If you do this however, ensure that the :obj:`~gi.repository.Gtk.Picture.props.can_shrink` property is set to :const:`True` or you might end up with an infinitely growing widget. Constructors ------------ .. rst-class:: interim-class .. class:: WidgetPaintable :no-index: .. classmethod:: new(widget: ~gi.repository.Gtk.Widget | None = None) -> ~gi.repository.Gtk.WidgetPaintable Creates a new widget paintable observing the given widget. :param widget: a ``GtkWidget`` Methods ------- .. rst-class:: interim-class .. class:: WidgetPaintable :no-index: .. method:: get_widget() -> ~gi.repository.Gtk.Widget | None Returns the widget that is observed or :const:`None` if none. .. method:: set_widget(widget: ~gi.repository.Gtk.Widget | None = None) -> None Sets the widget that should be observed. :param widget: the widget to observe Properties ---------- .. rst-class:: interim-class .. class:: WidgetPaintable :no-index: .. attribute:: props.widget :type: ~gi.repository.Gtk.Widget The observed widget or :const:`None` if none.