[pygtk] Why does autoconnect(self) not catch delete_event?

John Finlay finlay at moeraki.com
Fri May 28 07:43:11 WST 2004



Jonathon McKitrick wrote:

>Here is my code.  All of the signal handlers work correctly when I use the
>autoconnect(self) call except main_quit, called on the destroy event.  What is
>wrong?
>
>
>#!/usr/bin/env python
>
>import gsettingsdlg
>import pygtk; pygtk.require('2.0')
>import gtk
>import gtk.glade
>
>data = [['1', 'test item', 'description'],
>        ['2', 'test item', 'description'],
>        ['3', 'test item', 'description'],
>        ['4', 'test item', 'description'],
>        ['5', 'test item', 'description']]
>
>class MainWindow:
>    def __init__(self):
>        gladefile = 'glade/accountsgui.glade'
>        windowname = 'mainwindow'
>        self.wTree = gtk.glade.XML(gladefile, windowname)
>
>        d = { 'on_mainwindow_delete_event' : gtk.main_quit,
>              'on_listviewmain_select_cursor_row' :
>              self.on_listviewmain_select_cursor_row,
>              'on_listviewmain_row_activated' :
>              self.on_listviewmain_row_activated,
>             'on_listviewmain_cursor_changed' :
>              self.on_listviewmain_cursor_changed,
>              }
>        
>#        self.wTree.signal_autoconnect(self)
>        self.wTree.signal_autoconnect(d)
>        
>        self.make_view()
>#        self.view = self.make_view(liststore)
>
>    def on_mainwindow_delete_event(self, event, param):
>        print 'got delete event'
>        gtk.main_quit
>
should be: gtk.main_quit()

>        
>    def on_mainwindow_destroy(self, *params):
>        print 'got destroy event'
>        gtk.main_quit
>
ditto

>        
>#    def make_view(self, model):
>    def make_view(self):
>
>        liststore = gtk.ListStore(str, str, str)
>        for item in data:
>            iter = liststore.append()
>            liststore.set(iter,
>                          0, item[0],
>                          1, item[1],
>                          2, item[2])
>
>
>        view = self.wTree.get_widget('listviewmain')
>        view.set_model(liststore)
>        
>        renderer = gtk.CellRendererText()
>        column = gtk.TreeViewColumn('Column1', renderer, text=0)
>        view.append_column(column)
>
>        renderer = gtk.CellRendererText()
>        column = gtk.TreeViewColumn('Column2', renderer, text=1)
>        view.append_column(column)
>
>        renderer = gtk.CellRendererText()
>        column = gtk.TreeViewColumn('Column2', renderer, text=2)
>        view.append_column(column)
>
>    def on_listviewmain_select_cursor_row(self, listview, edit, *param):
>        sel = listview.get_selection()
>        model, iter = sel.get_selected()
>        val = model.get_value(iter, 0)
>        print 'row selected: %s' % val
>        sb = self.wTree.get_widget('statusbarmain')
>        id = sb.get_context_id('main')
>        sb.push(id, 'row selected: %s' % val)
>    
>    def on_listviewmain_row_activated(self, listview, path, column):
>        sel = listview.get_selection()
>        model, iter = sel.get_selected()
>        val = model.get_value(iter, 0)
>        print 'row activated: %s' % val
>        sb = self.wTree.get_widget('statusbarmain')
>        id = sb.get_context_id('main')
>        sb.push(id, 'row activated: %s' % val)
>
>    def on_listviewmain_cursor_changed(self, listview):
>        sel = listview.get_selection()
>        model, iter = sel.get_selected()
>        val = model.get_value(iter, 0)
>        print 'row changed: %s' % val
>        sb = self.wTree.get_widget('statusbarmain')
>        id = sb.get_context_id('main')
>        sb.push(id, 'row changed: %s' % val)
>        
>    def settings(self):
>        gsettingsdlg.SettingsDlg()
>
>if __name__ == '__main__':
>    m = MainWindow()
>#    m.settings()
>    gtk.main()
>
>jm
>  
>



More information about the pygtk mailing list