Topic: Tkinter , allineare campi decimali a destra per widget Label  (Letto 34 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline paolodecaro

  • python unicellularis
  • *
  • Post: 13
  • Punti reputazione: 0
    • Mostra profilo
Buonasera, ho questo problema, devo allineare in colonna dei campi decimali.  alcuni numeri sono composti da 3 interi e 2 decimali, altri da 2 interi e 2 decimali. 
adesso vengono visualizzati così : il campo Label si allunga o si accorcia secondo la lunghezza del numero.
 123,55
 45,45
 1,22

 in pratica li vorrei allineare cosi:
  123,55
     45,45
        1.22

Oppure se è complicato, far visualizzare gli 0 non significativi, per cui verrebbe così :

123,55
045,45
001,22

I campi di visualizzazione sono Label, Vi allego uno stralcio del sorgente :

self.b1s = Label(quadro_centrale_device_suoni, text=self.b1s_suonolink, bg= "#F0FFFF")
        self.b1s.grid(row=1, column=1,  sticky=W)
        self.b2s = Label(quadro_centrale_device_suoni, text=self.b2s_suonolink, bg= "#F0FFFF" )
        self.b2s.grid(row=2, column=1,  sticky=W)
        self.b3s = Label(quadro_centrale_device_suoni, text=self.b3s_suonolink, bg= "#F0FFFF" )
        self.b3s.grid(row=3, column=1,  sticky=W)
        self.b4s = Label(quadro_centrale_device_suoni, text=self.b4s_suonolink, bg= "#F0FFFF" )
        self.b4s.grid(row=4, column=1,  sticky=W) 
        self.b5s = Label(quadro_centrale_device_suoni, text=self.b5s_suonolink, bg= "#F0FFFF" )
        self.b5s.grid(row=5, column=1,  sticky=W)
        self.b6s = Label(quadro_centrale_device_suoni, text=self.b6s_suonolink, bg= "#F0FFFF" )
        self.b6s.grid(row=6, column=1,  sticky=W)
        self.b7s = Label(quadro_centrale_device_suoni, text=self.b7s_suonolink, bg= "#F0FFFF" )
        self.b7s.grid(row=7, column=1,  sticky=W)
        self.b8s = Label(quadro_centrale_device_suoni, text=self.b8s_suonolink, bg= "#F0FFFF" )
        self.b8s.grid(row=8, column=1,  sticky=W) 



Grazie in anticipo a tutti coloro che mi aiuteranno.

Cordiali Saluti

Paolo

Offline nuzzopippo

  • python erectus
  • ***
  • Post: 136
  • Punti reputazione: 0
    • Mostra profilo
Re:Tkinter , allineare campi decimali a destra per widget Label
« Risposta #1 il: Gennaio 11, 2020, 08:26 »
Buonasera, ho questo problema, devo allineare in colonna dei campi decimali.  alcuni numeri sono composti da 3 interi e 2 decimali, altri da 2 interi e 2 decimali.  ...

hai diversi ordini di "problemi".

Il primo è relativo alla "formattazione" dei numeri. Dato che ciò che devi visualizzare è del testo, è sufficiente passare alla label una stringa formattata come float con un numero di decimali fissi, formattandole tutte nello stesso modo, Ti faccio un esempio, diciamo siano tre decimali,

>>> num = [10.0,5.325, 0, 19.15]
>>> for n in num:
str_n = '%0.3f' % n
print(str_n)


10.000
5.325
0.000
19.150


Qualora poi Tu voglia utilizzare quale separatore dei decimali la "virgola" invece del "punto", senza andare a scomodare i metodi di "internazionalizzazione" che un programma un attimino "professionale" implementerebbe, ti basterà utilizzare il metodo "replace()" delle stringhe

il secondo "problema è dato dallo "allineamento" del testo visualizzato. Tanto le celle di griglia quanto le label hanno quale allineamento predefinito il "center" che però può essere liberamente impostato, tramite "sticky='w'" per le celle di griglia, cosa che hai già fatto, tramite la proprietà "anchor" nella definizione delle label, che provvederà ad allineare testo ed immagini rappresentate secondo l'indicazione espressa, quindi, prendendo una delle Tue dichiarazioni, la seguenza
        self.b3s.grid(row=3, column=1,  sticky=W)
        self.b4s = Label(quadro_centrale_device_suoni, text=self.b4s_suonolink, bg= "#F0FFFF", anchor='e' )
        self.b4s.grid(row=4, column=1,  sticky=E) 

dovrebbe rappresentarTi la label "self.b4s" allineata a destra con testo allineato a destra.

Ciao

[Edit] sto ancora dormendo, è "e" che ancora a destra, "w" ancora a sinistra, corretto il codice riportato, per altro c'è anche ila proprietà 'justify' che permette di definire un più esplicito "right"
« Ultima modifica: Gennaio 11, 2020, 08:43 da nuzzopippo »

Offline paolodecaro

  • python unicellularis
  • *
  • Post: 13
  • Punti reputazione: 0
    • Mostra profilo
Re:Tkinter , allineare campi decimali a destra per widget Label
« Risposta #2 il: Gennaio 11, 2020, 14:33 »
Grazie della tua disponibilità come sempre. Ho risolto il problema.
Cordiali Saluti
Paolo