[Python] Rappresentare e costruire graficamente un albero

Pietro Battiston toobaz a email.it
Mer 23 Apr 2008 16:29:57 CEST


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Matteo Buferli ha scritto:
> Buongiorno, vi spiego il mio problema: io ho una serie di immagini
> che vorrei organizzare in un albero, questa procedura e' banale, ma
> vorrei fornire un'interfaccia utente che permetta di effettuare
> tale operazione.
>
> Mi spiego meglio, date 5 immagini A, B, C, D, E che ho presenti su
> una barra, vorrei permettere il trascinamento di queste in un
> contenitore (che ne puo' ospitare anche altre). Ad esempio trascino
> A nel contenitore, poi decido di trascinare C, attraverso un
> pulsante le collego e sotto una routine mette C figlia di A.
>
> Vorrei chiedervi gentilmente quali strumenti usereste per
> implementare tale funzione e/o se conoscete qualche frammento di
> codice pubblico che implementa tale funzionalita' per poterlo
> visionare.
>
> Saluti!

Vuoi che l'albero sia raffigurato a mo' di albero genealogico?
Perché se invece ti va bene la raffigurazione classica "orizzontale"
(per intenderci, quella - più compatta e pratica ma per certi versi
meno carina - che ci si trova solitamente davanti in un "file
chooser", in cui ogni cartella/file è una riga, opportunamente
indentata), non devi fare quasi nulla di nuovo.

Ad esempio con le gtk ti serve solo un TreeStore; ti basterebbe a quel
punto stabilire che quando trascini un elemento su di un altro gli
stai dicendo "questo è figlio suo", e non avresti neanche bisogno del
pulsante "collega" (il punto di partenza sono i metodi drag_source_set
e drag_dest_set, che se non mi sbaglio ogni widget ha).

Se invece ti serve la raffigurazione verticale, per usare lo stesso
sistema ti dovresti fare un nuovo widget, quindi in effetti meglio
prima controllare se non c'è qualcosa di pronto, e su questo sono
ignorante.

Ad esempio Gramps (http://gramps-project.org/) ha una modalità di
visualizzazione orizzontale ma carina (con i "rettangolini");
probabilmente non è neanche difficile trasformarla in verticale, ma
siccome non è neanche interattiva altrettanto probabilmente faresti
prima a ripartire da zero.

ciao

Pietro
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFID0fkcZVtR82bmAYRAmFJAJ4/hUFFBabBasaHFLmGIpB7vSgXIgCffLaQ
ZqqeErjpnKGWBL83HtKIKRM=
=pDIX
-----END PGP SIGNATURE-----



Maggiori informazioni sulla lista Python