2010-10-01 2 views
1

Хотя я не новичок в Python, это моя первая попытка использовать Glade для разработки интерфейса. Мой файл Python выглядит следующим образом:Почему ноутбук не отображается в моем окне?

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() 

И файл «file.glade» выглядит следующим образом:

<?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> 

При запуске приложения, я получаю действительно крошечное окно и сообщение:

 
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") 

Кроме того, элемент управления не отображается.

ответ

1

Хорошо, похоже, проблема в том, что у элемента управления ноутбука не было виджетов на вкладках. Добавление чего-то привело к тому, что элемент управления наконец появился.

Смежные вопросы