Frage

Obwohl ich zu Python nicht neu bin, dies ist mein erster Versuch an Glade mit der Schnittstelle zu entwerfen. Meine Python-Datei sieht wie folgt aus:

import gobject
import gtk
import gtk.glade

class prefs_dialog:

    def __init__ (self):

        # Initialize the dialog

        self.window = gtk.glade.XML("file.glade").get_widget("prefs_dialog")
        self.window.show()

pd = prefs_dialog()
gtk.main()

Und die "file.glade" Datei sieht wie folgt aus:

<?xml version="1.0"?>
<glade-interface>
  <!-- interface-requires gtk+ 2.16 -->
  <!-- interface-naming-policy project-wide -->
  <widget class="GtkDialog" id="prefs_dialog">
    <property name="border_width">5</property>
    <property name="type_hint">normal</property>
    <property name="has_separator">False</property>
    <child internal-child="vbox">
      <widget class="GtkVBox" id="dialog-vbox">
        <property name="visible">True</property>
        <property name="spacing">2</property>
        <child>
          <widget class="GtkNotebook" id="notebook1">
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <child>
              <placeholder/>
            </child>
            <child>
              <widget class="GtkLabel" id="label1">
                <property name="visible">True</property>
                <property name="label" translatable="yes">page 1</property>
              </widget>
              <packing>
                <property name="tab_fill">False</property>
                <property name="type">tab</property>
              </packing>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <widget class="GtkLabel" id="label2">
                <property name="visible">True</property>
                <property name="label" translatable="yes">page 2</property>
              </widget>
              <packing>
                <property name="position">1</property>
                <property name="tab_fill">False</property>
                <property name="type">tab</property>
              </packing>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <widget class="GtkLabel" id="label3">
                <property name="visible">True</property>
                <property name="label" translatable="yes">page 3</property>
              </widget>
              <packing>
                <property name="position">2</property>
                <property name="tab_fill">False</property>
                <property name="type">tab</property>
              </packing>
            </child>
          </widget>
          <packing>
            <property name="position">1</property>
          </packing>
        </child>
        <child internal-child="action_area">
          <widget class="GtkHButtonBox" id="dialog-action_area">
            <property name="visible">True</property>
            <property name="layout_style">end</property>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
          </widget>
          <packing>
            <property name="expand">False</property>
            <property name="pack_type">end</property>
            <property name="position">0</property>
          </packing>
        </child>
      </widget>
    </child>
  </widget>
</glade-interface>

Wenn ich die Anwendung ausführen, bekomme ich ein wirklich winziges Fenster und die Meldung:

python prefs_dialog.py
prefs_dialog.py:11: GtkWarning: gtk_notebook_set_tab_label: assertion `GTK_IS_WI
DGET (child)' failed
  self.window = gtk.glade.XML("file.glade").get_widget("prefs_dialog")

Auch dann, wenn die Steuerung nicht an.

War es hilfreich?

Lösung

Okay, so scheint es, wie das Problem ist, dass die Notebook Kontrolle in den Registerkarten keine Widgets hatte. Hinzufügen etwas veranlasste die Steuerung schließlich zeigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top