2014-02-11 4 views
0

Я пытаюсь написать графический интерфейс с использованием Python, GTK + 3 и Glade. После учебника я подготовил код. Проблема в том, что connect_signals() не работает, поэтому кнопки на кнопках не имеют никакого эффекта.Python, GTK + 3 и Glade - connect_signals() не работает

питон:

from gi.repository import Gtk 

class Handler: 
    def onDeleteWindow(self, *args): 
     Gtk.main_quit(*args) 

    def onButtonPressed(self, button): 
     print("Hello World!") 

builder = Gtk.Builder() 
builder.add_from_file("gui.glade") 

builder.connect_signals(Handler()) 

window = builder.get_object("window1") 
window.show_all() 

Gtk.main() 

поляна:

<?xml version="1.0" encoding="UTF-8"?> 
<interface> 
    <!-- interface-requires gtk+ 3.0 --> 
    <object class="GtkWindow" id="window1"> 
    <property name="can_focus">False</property> 
    <child> 
     <object class="GtkBox" id="box1"> 
     <property name="visible">True</property> 
     <property name="can_focus">False</property> 
     <property name="orientation">vertical</property> 
     <property name="spacing">4</property> 
     <child> 
       <object class="GtkButton" id="button1"> 
       <property name="label" translatable="yes">Install</property> 
       <property name="use_action_appearance">False</property> 
       <property name="visible">True</property> 
       <property name="can_focus">True</property> 
       <property name="receives_default">True</property> 
       <property name="use_action_appearance">False</property> 
       </object> 
     </child> 
     </object> 
    </child> 
    </object> 
</interface> 

ответ

3

Вы пропустили имена сигналов в файле gui.glade: Смотрите две метки под названием сигнала ниже.

Ссылка: http://python-gtk-3-tutorial.readthedocs.org/en/latest/builder.html

<?xml version="1.0" encoding="UTF-8"?> 
<interface> 
    <!-- interface-requires gtk+ 3.0 --> 
    <object class="GtkWindow" id="window1"> 
    <property name="can_focus">False</property> 
    <signal name="delete-event" handler="onDeleteWindow" swapped="no"/> 
    <child> 
     <object class="GtkBox" id="box1"> 
     <property name="visible">True</property> 
     <property name="can_focus">False</property> 
     <property name="orientation">vertical</property> 
     <property name="spacing">4</property> 
     <child> 
       <object class="GtkButton" id="button1"> 
       <property name="label" translatable="yes">Install</property> 
       <property name="use_action_appearance">False</property> 
       <property name="visible">True</property> 
       <property name="can_focus">True</property> 
       <property name="receives_default">True</property> 
       <property name="use_action_appearance">False</property> 
       <signal name="pressed" handler="onButtonPressed" swapped="no"/> 
       </object> 
     </child> 
     </object> 
    </child> 
    </object> 
</interface> 
+0

HUP, это все. большое спасибо! – Turbinenreiter

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