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
Он также не примет экземпляр виджета контейнера. Что касается жизни, я не могу понять, какой параметр я должен передать.
П.С .: Я знаю, что мог бы добавить другой виджет между контейнером и дочерним виджетом, но я бы предпочел этого не делать.
ОБНОВИТЬ: Я думаю, это было недостаточно ясно: замещающий виджет должен быть в том же месте, что и исходный виджет, с теми же свойствами упаковки.