Foros del Web » Programando para Internet » Python »

ListStore en pygtk

Estas en el tema de ListStore en pygtk en el foro de Python en Foros del Web. Hola! Venía a ver si me podían ayudar: Tengo dos listas en python de esta manera, ejemplo: Dias = ['Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado', ...
  #1 (permalink)  
Antiguo 25/04/2011, 18:30
 
Fecha de Ingreso: abril-2011
Mensajes: 1
Antigüedad: 13 años, 6 meses
Puntos: 0
Información ListStore en pygtk

Hola! Venía a ver si me podían ayudar:

Tengo dos listas en python de esta manera, ejemplo:

Dias = ['Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado', 'Domingo']

Horas = ['8','9','10','11','12','13', '14']

(No es el ejemplo real pero es para simplificar) Y me gustaría crear un objeto para listarlo por columnas como esto:

http://zetcode.com/tutorials/gtksharptutorial/images/listview.png

En el ejemplo sería: Donde en la imagen pone "Name" me gustaría que pusiera "Dias" y donde en la imagen pone "Place" me gustaría que pusiera "Horas" y mostrar los datos de la lista. Y después me gustaría que al clicar en cada fila se creara un evento.

Mirando por internet he visto un objeto que se llama "ListStore" que creo que me vale para eso pero no he encontrado nada claro para poder utilizarlo. Alguien me podría poner un ejemplo muy sencillito para que entendiera como hacer el mío?

Gracias!
  #2 (permalink)  
Antiguo 25/04/2011, 18:57
Avatar de 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()

Etiquetas: pygtk
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:19.