Почему в моем окне не отображается блокнот управления ноутбуком?
Хотя я не новичок в 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: утверждение `GTK_IS_WI DGET (child)'не выполнено self.window = gtk.glade.XML("file.glade").get_widget("prefs ")
Также управление не показывает.
1 ответ
Решение
Итак, похоже, проблема в том, что в блокноте ноутбука не было виджетов на вкладках. Добавление чего-то привело к тому, что элемент управления наконец появился.