[pygtk] Confused by multiple selections

Dieter Verfaillie dieterv at optionexplicit.be
Fri Oct 15 18:09:46 WST 2010


Hi,

You could even handle everything in your button 'clicked' handler,
see below.

mvg,
Dieter

#!/usr/bin/env python
# -*- coding: utf-8 -*-


import pygtk
pygtk.require('2.0')
import gtk


class BasicTreeViewExampleWindow(gtk.Window):
     __gtype_name__ = 'MyBasictreeViewExampleWindow'

     def __init__(self):
         gtk.Window.__init__(self)

         self.set_title('Music Collection')
         self.set_size_request(500, 200)

         vbox = gtk.VBox()
         self.add(vbox)

         # create liststore
         self.liststore = gtk.ListStore(str, str)
         self.liststore.append(['acdc - highway to hell',   
'$MUSIC\acdc\highway'])
         self.liststore.append(['Saxon - inner sanctum',   
'$MUSIC\saxon\inner'])
         self.liststore.append(['Gun - Greatest Hist',   
'$MUSIC\gun\greatest_hits'])
         self.liststore.append(['ABC - Look of love',   
'$music\abc\look_of_love'])

         # create treeview using liststore
         self.treeview = gtk.TreeView(self.liststore)
         self.treeview.set_headers_visible(False)
         self.treeview.set_search_column(0)
         self.treeview.set_reorderable(False)

         treeselection = self.treeview.get_selection()
         treeselection.set_mode(gtk.SELECTION_MULTIPLE)

         tvcolumn = gtk.TreeViewColumn()
         cell = gtk.CellRendererText()
         tvcolumn.pack_start(cell, True)
         tvcolumn.add_attribute(cell, 'text', 0)
         self.treeview.append_column(tvcolumn)
         vbox.pack_start(self.treeview, expand=True, fill=True)

         button  = gtk.Button('click here')
         button.connect('clicked', self.on_button_clicked)
         vbox.pack_start(button, expand=False, fill=True)

     def on_button_clicked(self, widget, data=None):
         selection = self.treeview.get_selection()
         model, selection = selection.get_selected_rows()

         print 'selected row(s):'

         for path in selection:
             iter = model.get_iter(path)

             if iter is not None:
                 print '%s (%s)' % (model.get_value(iter, 0),  
model.get_value(iter, 1))


def quit(widget, event):
     gtk.main_quit()

def main():
     examplewindow = BasicTreeViewExampleWindow()
     examplewindow.connect('delete_event', quit)
     examplewindow.show_all()
     gtk.main()

if __name__ == '__main__':
     main()


----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.


More information about the pygtk mailing list