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.

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.

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.

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!)