myLabel

Il widget Label ci permette di visualizzare una stringa.

Questo può essere posizionato vicino ad un’ altro oggetto per identificarlo.

Avvertimento

Attenzione che ho dovuto correggere un piccolo bug sulla gestione dei css. Per cui sono stati aggiornati alcuni files. Consiglio sempre di scaricare l’ ultima versione che trovate sempre alla fine del post.

myLabel

#-----------------------------------------------------------------------------
# myLabel
#-----------------------------------------------------------------------------
def myLabel(name='myLabel', 
            leng=0, prea=' ', post='', 
            font='Curier 10', 
            colo='black'):
    """ crea una label con attributi stabiliti
    
        -> name nome associato alla label
        -> leng lunghezza di formattazione
        -> prea preambolo di formattazione
        -> post post (aggiunto dopo la label)
        -> font font usato per il testo
        -> colo colore assegnato
    """
#label
    # istanzio una label
    labe = Gtk.Label()
    # la rendo visibile
    labe.show()
    #labe.set_alignment(0,0.5)
    if leng > 0:
        name = name.rjust(leng,prea)
    name += post
    # imposto la label
    labe.set_markup(name)
    # imposto un font
    labe.modify_font(Pango.FontDescription(font))
    # imposto il colore
    labe.modify_fg(Gtk.STATE_NORMAL, Gdk.color_parse(colo))
# <-        
    return labe
#-----------------------------------------------------------------------------
def testLabel():
#myLabel
    # labe
    labe = myLabel(name='prova', 
                   leng=len('prova')+5, prea='.', post='', 
                   font='Arial 10', 
                   colo='blue')
# <-
    return labe

I parametri che differiscono dai soliti nostri widgets sono l’ impostazione del font da usare per la nostra stringa e il colore da usare per la scrittura.

    # imposto un font
    labe.modify_font(Pango.FontDescription(font))
    # imposto il colore
    labe.modify_fg(Gtk.STATE_NORMAL, Gdk.color_parse(colo))

Mentre altri 3 parametri leng, prea e post meritano una spiegazione. Se decidiamo che la nostra stringa debba occupare un certo spazio dobbiamo indicare la lunghezza, inoltre possiamo decidere il carattere da usare per identare a destra, e ultimo possiamo aggiungere un post fisso alla nostra stringa. Vedremo più avanti l’ utilità di queste cose.

    #labe.set_alignment(0,0.5)
    if leng > 0:
        name = name.rjust(leng,prea)
    name += post

Se proviamo ad avviare il test otterremo quanto segue.

alternate text

testLabel in esecuzione.

myLabList

Quello che segue è la solita lista di oggetti che non serve commentare.

Il codice segue la stessa filosofia delle altre liste già viste.

#-----------------------------------------------------------------------------
# myLabel List
#-----------------------------------------------------------------------------
def myLabList(name=["_Read","_Write","_Defau"], 
              leng=0, prea=' ', post='', 
              font='Courier 10', 
              colo='black',
              tBox='v', aBox=[False, False, 1]):
    # funzione che istanzia oggetti tipo
    def myList(ind):
#myLabel
        # labe
        obje = myLabel(name[ind], leng, 
                       prea, post, font, colo)
        return obje, None
#myBoxList
    # xBox, [labe, None] * N
    obje, othe = myBoxList(name=name, tBox=tBox, 
                           aBox=aBox, func=myList)
# <-
    return obje, othe
#-----------------------------------------------------------------------------
def testLabList():
#myLabList    
    # xBox, [labe, None] * N
    obje, othe = myLabList(name=["Read","Write","Default"], 
                           leng=7, prea=' ', post=':', 
                           font='Courier 10', 
                           colo='brown',
                           tBox='v', aBox=[False, False, 1])
    # cambio colore alla seconda label
    othe[1][0].modify_fg(Gtk.STATE_NORMAL, Gdk.color_parse("green"))
#myFrame    
    # fram,[labe,xBox]
    obj1, oth1 = myFrame(name='myLabel', obje=obje, colo='black',
                         bord=2, shad=Gtk.SHADOW_ETCHED_OUT,
                         tBox='v' )
    #debug
    myViewObject(obje, othe)
# <-
    return obj1

Se proviamo ad avviare il test otterremo quanto segue.

Notate l’ utilizzo dell’ identazione a destra con post fisso.

alternate text

testLabList in esecuzione.

myLabFrame

Per finire uniamo il widget myFrame già visto con myLabel.

#-----------------------------------------------------------------------------
# myLabFrame
#-----------------------------------------------------------------------------
def myLabFrame(name='myLabel', 
            leng=0, prea=' ', post='', 
            font='Curier 10', 
            colo=Gdk.color_parse('black'),
            nFra='Label', cFra='black', bFra=1, sFra=Gtk.SHADOW_ETCHED_OUT, 
            tFra='v', aFra=[False, False, 1]):
    """ crea una label con attributi stabilit
    
        -> name nome associato alla label
        -> leng lunghezza di formattazione
        -> prea preambolo di formattazione
        -> post post (aggiunto dopo la label)
        -> font font usato per il testo
        -> colo colore assegnato
        -> nFra nome del frame 
        -> cFra colore nome del frame 
        -> bFra bordo riservato all'esterno
        -> sFra tipo di cornice
        -> tFra tipo di contenitore v/h 
        -> aFra attributi del contenitore
    """
#myLabel
    # labe
    labe = myLabel(name=name, 
                   leng=leng, prea=prea, post=post, 
                   font=font, colo=colo)
#myFrame
    #fram, [labe, xBox]
    fram,othe = myFrame(nFra, labe, cFra, bFra, sFra, tFra, aFra)
    # <-
    #fram, [labe, lFrm, xBox]        
    return fram, [labe, othe[0], othe[1]]
#-----------------------------------------------------------------------------
def testLabFrame():
#myLabFrame
    #fram, [labe, lFrm, xBox]
    obje, othe = myLabFrame(name='myText', 
                            leng=len('myText')+5, prea='.', post='', 
                            font='Arial 10', 
                            colo='blue',
                            nFra='Label', cFra="blue", bFra=1, sFra=Gtk.SHADOW_ETCHED_OUT, 
                            tFra='v', aFra=[False, False, 1])
# <-
    return obje

Nota

Osservate come vengono passati i parametri in uscita. C’ è sempre l’ oggetto principale seguito dalla lista di oggetti utili istanziati.

Se proviamo ad avviare il test otterremo quanto segue.

alternate text

testLabFrame in esecuzione.

Package

La struttura del nostro package ora è la seguente:

l00_start.py
l01_startGtk.py
my00init.py
myWidg/
  __init__.py
  my00init.py
  my00initGtk.py
  my01Box.py
  my02Label.py
  myWind.py
  myApp.py

Per scaricare la nuova versione 20150827.zip

Saluti

Nel prossimo post vedremo l’ oggetto entry.

Ciao alla prossima. (stay tune!)