Formbuilder¶
Uno dei compiti più fastidiosi nella creazione di una form è il piazzamento di coppie etichetta/valore in un modo semplice e con un risultato estetico gradevole. In Genropy si utilizza molto spesso uno strumento per posizionare i campi chiamato formbuilder. Il formbuilder crea una tabella html opportunamente costruita e molto pratica per impaginare i campi.
Prendiamo l’esempio visto nella lezione sul datastore e facciamone una versione che utilizza il formbuilder.
Suggerimento
Per un dettaglio sul funzionamento del formbuilder e sui parametri utilizzabili si rimanda alla lezione dedicata nella Widgetpedia
Esaminando il codice vediamo che viene creato un formbuilder:
fb=root.formbuilder(cols=2)
Con questa istruzione ci viene restituito un formbuilder impaginato su 2 colonne al quale andiamo ad aggiungere man mano gli elementi voluti:
fb.input('^parameters.string_to_show',lbl='String To Show',width='100%',colspan=2)
fb.input('^parameters.color',lbl='Color')
Notiamo che all’elemento input passiamo un parametro lbl che non rientrerebbe nei parametri dell’input stesso. Infatti viene rubato dal formbuilder e usato per fare definire l’etichetta da assegnare all’elemento inserito nel formbuilder.
Il formbuilder è in realtà una tabella HTML e quindi possiamo ad esempio usare gli attributi
colspan
e rowspan
.
Avendo usato un formbuilder a 2 colonne otteniamo una disposizione dei campi che rispetta tale scelta.
Vediamo ora lo stesso esempio con un formbuilder a 3 colonne.
Rispetto all’esempio precedente notiamo che al formbuilder passiamo più parametri:
fb=root.formbuilder(cols=3, border_spacing='2px',colswidth='auto',
lbl_color='darkgreen',width='500px',fld_width='100%')
cambiamo il numero delle colonne,
assegniamo una larghezza al formbuilder con l’attributo colswidth=”auto”,
chiediamo di autocalcolare le larghezze,
inoltre con il prefisso
lbl_
assegniamo l’attributo colore a TUTTE le label.
Vediamo che però possiamo ridefinire tale attributo per i campi voluti:
fb.input('^parameters.rounded',lbl='Rounded',lbl_color='darkblue')
Suggerimento
Come regola generale ricorda che spessissimo in Genropy si usa la tecnica
di parametri prefissati per indirizzare il valore ad una parte specifica.
In questo caso lbl_
significa che parliamo della label. Se volessimo
assegnare la larghezza della label potremmo fare lbl_width e via dicendo.
Nel caso del formbuilder possiamo assegnare attributi globali a livello di formbuilder
anche al campo con fld_
alla cella del campo con tdf_
,
alla cella della label con tdl_
.