Suddividere il codice

Per scrivere pagine complesse è buona abitudine dividere il codice in sottochiamate in modo da facilitare leggibilità e manutenibilità.

Torniamo all’esempio del Multicolor Pane e cerchiamo di scrivere il codice in maniera più leggibile.

Nel main viene come sempre creato il titolo e poi viene chiamata una funzione multicolorPane che è definita più sotto. La funzione riceve il numero dei pallini voluti e dei parameteri di posizionamento:

self.multicolorPane(root, howmany=96, width='400px',
                         margin_top='50px',margin='auto',
                         shadow='4px 4px 8px #666')

Sempre nel main viene definito un contenitore che chiamiamo box nel quale mettiamo 6 multicolorPane:

box = root.div(margin='auto', margin_top='50px',width='460px')

for k in range(6) :
    self.multicolorPane(box, howmany=24, width='200px',
                    display='inline-block',margin='4px')

Vediamo ora la definizione di multicolorPane che riceve i parametri pane , howmany e **box_kwargs .

Viene costruito un contenitore definendo alcuni attributi fissi e ricevendone altri dal chiamante:

mybox=pane.div(padding='10px',
               border='1px solid silver',rounded='10',
               **box_kwargs)

Il contenitore viene poi popolato col numero desiderato di pallini:

for j in range(howmany):
    mybox.div(height='15px', width='15px', shadow='2px 2px 3px #666',
              background_color=self.randomColor(),
              rounded='10', display='inline-block', margin='5px')

Si noti come per creare di volta in volta n colori a caso venga invocata la funzione randomColor:

return 'rgb(%i,%i,%i)'%(rn(0,255),rn(0,255),rn(0,255))