Wie ändere ich die Eigenschaft eines GTK-Widgets wie eines Stapels?

Ich habe mir kurz die GTK 3.10-Dokumentation für einen GtkStack angesehen.

https://developer.gnome.org/gtk3/3.10/GtkStack.html

Es wird erwähnt, dass dem zu einem GtkStack hinzugefügten untergeordneten Element die Eigenschaft "Symbolname" zugewiesen wird.

Meine Frage ist - wie kann ich den Wert dieser Eigenschaft ändern. Der Grund: Ich möchte die GtkStackSwitcher-Schaltfläche als Symbol und nicht als Text ändern, aber ich möchte dies codieren. Verwenden Sie keine GktBuilder-Benutzeroberfläche.

Wenn Sie sich das anschauengtk3-demo - Stack-Demo und die UI-Datei, die Sie sehen können, der GtkSwitcher hat ein Symbol.

<?xml version="1.0" encoding="UTF-8"?>
<interface>
  <!-- interface-requires gtk+ 3.6 -->
  <object class="GtkWindow" id="window1">
    <property name="can_focus">False</property>
    <property name="title" translatable="yes">GtkStack</property>
    <child>
      <object class="GtkGrid" id="grid1">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <child>
          <object class="GtkStackSwitcher" id="switcher">
            <property name="visible">True</property>
            <property name="stack">stack</property>
            <property name="halign">center</property>
          </object>
          <packing>
            <property name="left_attach">0</property>
            <property name="top_attach">0</property>
            <property name="width">1</property>
            <property name="height">1</property>
          </packing>
        </child>
        <child>
          <object class="GtkStack" id="stack">
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="transition-type">crossfade</property>
            <child>
              <object class="GtkImage" id="image1">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="margin-top">20</property>
                <property name="margin-bottom">20</property>
                <property name="resource">/application/gtk-logo-48.png</property>
              </object>
              <packing>
                <property name="name">page1</property>
                <property name="title" translatable="yes">Page 1</property>
              </packing>
            </child>
            <child>
              <object class="GtkCheckButton" id="checkbutton1">
                <property name="label" translatable="yes">Page 2</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="receives_default">False</property>
                <property name="xalign">0</property>
                <property name="draw_indicator">True</property>
                <property name="halign">center</property>
                <property name="valign">center</property>
              </object>
              <packing>
                <property name="name">page2</property>
                <property name="title" translatable="yes">Page 2</property>
              </packing>
            </child>
            <child>
              <object class="GtkSpinner" id="spinner1">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="halign">center</property>
                <property name="valign">center</property>
                <property name="active">True</property>
              </object>
              <packing>
                <property name="name">page3</property>
                <property name="icon-name">face-laugh-symbolic</property>
              </packing>
            </child>
          </object>
          <packing>
            <property name="left_attach">0</property>
            <property name="top_attach">1</property>
            <property name="width">1</property>
            <property name="height">1</property>
          </packing>
        </child>
      </object>
    </child>
  </object>
</interface>

Verwenden des Python3-Interpreters unter Ubuntu 14.04 (Gtk 3.10)

Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from gi.repository import Gtk
>>> stack = Gtk.Stack()
>>> spin = Gtk.Spinner()
>>> stack.add_named(spin, "spin")
>>> stack.show_all()
>>> child = stack.get_visible_child()
>>> child.props.icon_name = "go-previous"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'gi._gobject.GProps' object has no attribute 'icon_name'
>>> stack.props.icon_name = "go-previous"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'gi._gobject.GProps' object has no attribute 'icon_name'
>>> 

Wie Sie sehen, habe ich einem Stapelobjekt einen GtkSpinner hinzugefügt und versucht, auf das hinzugefügte untergeordnete Objekt zuzugreifen und dann die Eigenschaft "Symbolname" zu ändern.

Keine Freude. Also, was ist der offensichtliche Fehler, den ich mache?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage