Gtk3 untergeordnetes Widget durch ein anderes Widget ersetzen

Ich suche nach einer Möglichkeit, ein Widget von seinem übergeordneten Element zu entfernen (was auch immer das sein mag - eine VBox, ein Grid, ...) und an seiner Stelle ein Ersatz-Widget hinzuzufügen.

Ich fanddiese Antwort, aber ich kann nicht scheinen, es mit Gtk3 arbeiten zu lassen.

Hier ist, was ich versucht habe:

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)

Aber der Anruf anGtk.ContainerClass.list_child_properties wirft

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

Er akzeptiert keine Instanz eines Container-Widgets. Für mein Leben kann ich nicht herausfinden, welchen Parameter ich übergeben soll.

P.S .: Ich weiß, dass ich ein weiteres Widget zwischen dem Container und dem untergeordneten Widget hinzufügen könnte, aber ich würde es lieber nicht tun.

AKTUALISIEREN Ich denke, es war nicht klar genug: Das Ersatz-Widget soll sich an der gleichen Stelle wie das Original-Widget mit den gleichen Verpackungseigenschaften befinden.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage