def setup_column(self, widget, column=0, attribute=None, renderer=None,
        property=None, from_python=None, to_python=None, model=None):
        # Maybe this is too overloaded.
        """
        Set up a :class:`TreeView` to display attributes of Python objects
        stored in its :class:`TreeModel`.

        This assumes that :class:`TreeViewColumn` instances have already
        been added and :class:`CellRenderer` instances packed into them.
        Both can be done in Glade.

        *model* is the instance displayed by the widget. You only need to pass
        this if you set *renderer* to be editable.
        If you use sorting or filtering this may not be the actual data store,
        but all tree paths and column indexes are relative to this.
        Defaults to our model.

        *widget* is a column, or a string naming one in our view.

        *column* is an integer addressing the column in *model* that holds your
        objects.

        *attribute* is a string naming an object attribute to display. Defaults
        to the name of *widget*.

        *renderer* defaults to the first one found in *widget*.

        *property* is a string naming the property of *renderer* to set. If not
        given this is guessed based on the type of *renderer*.

        *from_python* is a callable. It gets passed a value from the object and
        must return it in a format suitable for *renderer*. If not given this
        is guessed based on *property*.

        *to_python* is a callable. It gets passed a value from *renderer* and
        must return it in a format suitable for the attribute. If not given a
        cast to the type of the previous attribute value is attempted.

        If you need more flexibility, like setting multiple properties, setting
        your own cell data function will override the internal one.

        Returns an integer you can use to disconnect the internal editing
        callback from *renderer*, or None.

        .. versionadded:: 1.99.2
        """
        if isinstance(widget, str):
            widget = self.view[widget]
        if not model and isinstance(self.model, Gtk.TreeModel):
            model = self.model
        return setup_column(widget, column=column, attribute=attribute,
            renderer=renderer, property=property, from_python=from_python,
            to_python=to_python, model=model)