[Python] soluzione gtk/sqlkit

Alessandro Dentella sandro a e-den.it
Lun 26 Apr 2010 15:23:20 CEST


On Mon, Apr 26, 2010 at 12:02:53PM +0200, Nicola Larosa wrote:
> > Giovanni Porcari wrote:
> >> Per quello che riguarda la richiesta di una versione offline è nelle
> >> nostre intenzioni il fatto di creare un eseguibile multipiattaforma
> >> (eventualmente da usare su chiavetta USB) che incorpori un server
> >> wsgi (noi usiamo paste) mentre per il db vorremmo usare sqlite.
> 
> Marco Giusti wrote:
> > perché non creare una micro applicazione con gtk (o tk) e sqlite? non
> > avrà lo stesso sex appeal di genropy, ma usare un web server per
> > un'applicazione così piccola mi sembra un po' sproporzionato. inoltre
> > con pyinstaller si crea facilmente un eseguibile e il gioco è fatto.
> 
> Ottima idea, facci sapere quando hai fatto, grazie. ;-)

propongo qui 2 soluzioni con sqlkit [1]. La prima richiede 3 click in più per
arrivare ad avere quello che ha proposto Giovanni, usa 'sqledit' l'eseguibile
che viene distribuito assieme a sqlkit. Da riga di comando le configurazioni
sono quindi limitate ed i filti vanno aggiunti a mano (i famosi 3
click). Potete vedere l'effetto qui: http://www.e-den.it/misc/med.mpeg

ho preparato un db di sqlite con i codici: med.sqlite reperibile qui [2]

sqledit via pyinstaller
-----------------------

Partiamo dal boundle fatto con pyinstaller::

  $ wget -q http://www.e-den.it/misc/med.sqlite
  $ wget -q http://sqlkit.argolinux.org/download/sqledit-binary-0.8.6.tar.gz
  $ tar xzf sqledit-binary-0.8.6.tar.gz
  $ ./sqledit-0.8.6/sqledit sqlite:///med.sqlite codici --load

A questo punto vi si apre una tabella con le due colonne. L'intestazione è
cliccabile, nel menu dropdown la prima voce è "aggiungi un filtro" come
mostrato qui http://sqlkit.argolinux.org/sqlkit/filters.html.

Se usate Windows potete scaricare l'installer per Windows [3], e lanciare da
riga di comando (la medesima salvo i path) o usare la gui e mettere il path
del database sqlite nella forma sqlite:///C:/Docments and settings/.../med.sqlite

sqlkit da python
----------------

Questa è la modalità più flessibile, ma prevede che abbiate installato
sqlkit. Il programma si riduce a::

   #!/usr/bin/python

   import gtk
   import sys
   import sqlkit
   from sqlkit import widgets as skw

   DB_FILE = '/home/sandro/med.sqlite'

   db = sqlkit.DbProxy(bind="sqlite:///%s" % DB_FILE)
   m = skw.SqlTable(table='codici', dbproxy=db)
   for tk in sys.argv[1:]:
       m.add_filter(descr__icontains=tk)

   m.add_filter(cod__ilike="")
   m.reload()

   gtk.main()


che apre già un filtro sulla descrizione per ogni argomento, supponendo
salviate il codice in med.py:

   ./med.py frat fem

Vi apre la lista di tutti i codici esattamente come proposto da Giovanni.
Se invece volete comunque aprire i filtri anche se vuoti, in modo da
risparmiare anche i click:

    m.add_filter(descr__icontains='')
    m.add_filter(descr__icontains='')
   



sandro
*:-)



[1] http://sqlkit.argolinux.org/index.html
[2] http://www.e-den.it/misc/med.sqlite
[3] http://sqlkit.argolinux.org/download/sqledit-setup-0.8.6.1.exe
-- 
Sandro Dentella  *:-)
http://sqlkit.argolinux.org        SQLkit home page - PyGTK/python/sqlalchemy


Maggiori informazioni sulla lista Python