Some style suggestions below

2010/3/18 Julián Alarcón <[email protected]>:
> 2010/3/18 Vermeersch Simon <[email protected]>:
>> 2010/3/18 Julián Alarcón <[email protected]>:
>>> Hi guys, I don't know if this is the right place to bother you with
>>> this support ask.
>>>
>>> I'm making a little app that takes data from PostgreSQL and show it on
>>> a TreeView. But, I need to update the data every 5 minutes, but I
>>> don't know how to make this. I tried some while loops but the window
>>> didn't appear.
>>>
>>> This is the code: http://paste.ubuntu.com/397321/
>>>
>>> And this is a little screenshot: http://i42.tinypic.com/14yaazs.jpg
>>>
>>> Thanks!
>>> _______________________________________________
>>> pygtk mailing list   [email protected]
>>> http://www.daa.com.au/mailman/listinfo/pygtk
>>> Read the PyGTK FAQ: http://faq.pygtk.org/
>>>
>>
>> You can use the gobject.timeout_add function to update your treeview.
>> Something like that:
>>
>> def __init__(self):
>>    ....
>>    gobject.timeout_add(300000, self.refresh_treeview)
>>
>> def refresh_treeview(self):
>>    #reload your data and refresh the treeview here
>>    return True
>>
>>
>> --
>> Simon Vermeersch
>>
> ################################
>
>
> Hi Simon, I just made some changes and add this:
>
>
>    def refresh_treeview(self):
>        try:
>                conexiondb = psycopg2.connect("dbname='databas' user='user'
> host='172.16.0.1' password='password'");
>                print "Conexion exitosa"
>        except:
>                print "No se pudo conectar a la base de datos"
>                gtk.main_quit()
>        cursor = conexiondb.cursor()
>        cursor.execute("SELECT * FROM datos_aplicacion")
>        consulta = cursor.fetchall()
>        datos = gtk.TreeStore(str,str,str,str,str,str,str,str,str,str)

>        for fila in consulta:
>                print fila[0], fila[1], fila[2], fila[3], fila[4], fila[5], 
> fila[6],
> fila[7], fila[8], fila[9]

Why not use a slice here?  Something like:

          for file in consulta:
              print fila[0:10]

>                datos.append(None,
> [fila[0],fila[1],fila[2],fila[3],fila[4],fila[5],fila[6],fila[7],fila[8],fila[9]])

Here too:

         datos.extend(None, *fila[0:10])

>
>        self.treeview = gtk.TreeView(datos)
>        # create a CellRendererText to render the data
>        self.cell = gtk.CellRendererText()
>
>        # add the cell to the tvcolumn and allow it to expand
>        self.tvcolumna1.pack_start(self.cell, True)
>        self.tvcolumna2.pack_start(self.cell, True)
>        self.tvcolumna3.pack_start(self.cell, True)
>        self.tvcolumna4.pack_start(self.cell, True)
>        self.tvcolumna5.pack_start(self.cell, True)
>        self.tvcolumna6.pack_start(self.cell, True)
>        self.tvcolumna7.pack_start(self.cell, True)
>        self.tvcolumna8.pack_start(self.cell, True)
>        self.tvcolumna9.pack_start(self.cell, True)
>        self.tvcolumna10.pack_start(self.cell, True)

Why not put this in a for-loop?  Something like:

          for i in range(10):
              getattr(self, 'tvcolumna%s' % i).pack_start(self.cell. True)

>
>        # set the cell "text" attribute to column 0 - retrieve text
>        # from that column in treestore
>        self.tvcolumna1.add_attribute(self.cell, 'text', 0)
>        self.tvcolumna2.add_attribute(self.cell, 'text', 1)
>        self.tvcolumna3.add_attribute(self.cell, 'text', 2)
>        self.tvcolumna4.add_attribute(self.cell, 'text', 3)
>        self.tvcolumna5.add_attribute(self.cell, 'text', 4)
>        self.tvcolumna6.add_attribute(self.cell, 'text', 5)
>        self.tvcolumna7.add_attribute(self.cell, 'text', 6)
>        self.tvcolumna8.add_attribute(self.cell, 'text', 7)
>        self.tvcolumna9.add_attribute(self.cell, 'text', 8)
>        self.tvcolumna10.add_attribute(self.cell, 'text', 9)

Here too:

          for i in range(10):
              getattr(self, 'tvcolumna%s' % i).add_attribute(self.cell. True)

Just an idea.  Plus, I would put the number of columns in a constant
somewhere instead of hard-coding it.  That way, if you add or remove
columns, your code doesn't have to change.


>
>        self.window.show_all()
>
>        return True
>
> ################################
>
>
> The output of my sql query is working, but the refresh of TreeView is
> not working, I just need that. Can you help me? Where is my mistake?
>
> Thanks for your help, my app is getting close to my wish :)
> _______________________________________________
> pygtk mailing list   [email protected]
> http://www.daa.com.au/mailman/listinfo/pygtk
> Read the PyGTK FAQ: http://faq.pygtk.org/



-- 
Gerald Britton
_______________________________________________
pygtk mailing list   [email protected]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://faq.pygtk.org/

Reply via email to