Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/04/2011, 18:57
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: ListStore en pygtk

Ejemplo sacado de aquí (Pero modificado por mi para hacerlo un poco mas flexible y relativamente mas fácil de entender):
Código Python:
Ver original
  1. #coding: utf-8
  2. import gtk
  3.  
  4. Dias = ['Lunes', 'Martes', u'Miércoles', 'Jueves', 'Viernes', u'Sábado', 'Domingo']
  5. Horas = ['08', '09', '10', '11', '12', '13', '14']
  6. DiasHoras = zip(Dias, Horas)
  7.  
  8.  
  9. class PyApp(gtk.Window):
  10.     def __init__(self):
  11.         #Llamada explicita al constructor de la clase padre
  12.         super(PyApp, self).__init__()
  13.        
  14.         #Estas son las cabeceras
  15.         self.headers = ["Dias", "Horas"]
  16.        
  17.         #Hacemos algunos ajustes a la apariencia de la ventana
  18.         self.set_size_request(350, 250)
  19.         self.set_position(gtk.WIN_POS_CENTER)
  20.         self.set_title("ListView")
  21.  
  22.         vbox = gtk.VBox(False, 8)
  23.         sw = gtk.ScrolledWindow()
  24.         sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
  25.         sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
  26.        
  27.         vbox.pack_start(sw, True, True, 0)
  28.  
  29.         store = self.create_model()
  30.  
  31.         treeView = gtk.TreeView(store)
  32.         treeView.connect("row-activated", self.on_activated)
  33.         treeView.set_rules_hint(True)
  34.         sw.add(treeView)
  35.  
  36.         self.create_columns(treeView)
  37.         self.statusbar = gtk.Statusbar()
  38.        
  39.         vbox.pack_start(self.statusbar, False, False, 0)
  40.  
  41.         self.add(vbox)
  42.         self.show_all()
  43.         self.connect("destroy", gtk.main_quit)
  44.  
  45.  
  46.     def create_model(self):
  47.         store = gtk.ListStore(*[str]*len(self.headers))
  48.  
  49.         for item in DiasHoras:
  50.             store.append(item)
  51.  
  52.         return store
  53.  
  54.  
  55.     def create_columns(self, treeView):
  56.         for index, header in enumerate(self.headers):
  57.             rendererText = gtk.CellRendererText()
  58.             column = gtk.TreeViewColumn(header, rendererText, text=index)
  59.             column.set_sort_column_id(index)    
  60.             treeView.append_column(column)
  61.  
  62.  
  63.     def on_activated(self, widget, row, col):
  64.         model = widget.get_model()
  65.         text = ', '.join(i for i in model[row])
  66.         self.statusbar.push(0, text)
  67.  
  68.  
  69. PyApp()
  70. gtk.main()