Gtk3 заменить дочерний виджет другим виджетом

Я ищу способ удалить виджет из его родителя (что бы это ни было - VBox, Grid, ...) и добавить замещающий виджет на его место.

я нашелэтот ответ, но я не могу заставить его работать с Gtk3.

Вот что я попробовал:

from gi.repository import Gtk

def replace_widget(old, new):
    parent= old.get_parent()

    props= {}
    for key in Gtk.ContainerClass.list_child_properties(type(parent)):
        props[key.name]= parent.child_get_property(old, key.name)

    parent.remove(old)
    parent.add_with_properties(new, **props)

Но призыв кGtk.ContainerClass.list_child_properties повышения

TypeError: argument self: Expected a Gtk.ContainerClass, but got gi.repository.Gtk.GObjectMeta

Он также не примет экземпляр виджета контейнера. Что касается жизни, я не могу понять, какой параметр я должен передать.

П.С .: Я знаю, что мог бы добавить другой виджет между контейнером и дочерним виджетом, но я бы предпочел этого не делать.

ОБНОВИТЬ: Я думаю, это было недостаточно ясно: замещающий виджет должен быть в том же месте, что и исходный виджет, с теми же свойствами упаковки.

Ответы на вопрос(4)

Ваш ответ на вопрос