Lo scopo di questo articolo è quello di condividere una funzione in Python che permette di cambiare la dimensione di un font di una label in base al testo che deve contenere. 

L'interfaccia grafica che viene utilizzata è TkInter.

L'esigenza è nata dal fatto che in una applicazione sono presenti delle label con dimensione fissa, mentre il testo al loro interno ha una lunghezza variabile e quindi necessita di essere ridimensionato in base alla lunghezza.

Per risolvere questo problema è stata scritta questa mini funzione:

    def calculate_font_size(self, stringa, font_size, dimensione_label):
        font = tkFont.Font(family="Roboto Condensed", size=font_size)
        w = font.measure(stringa)
        if w > (dimensione_label ):
            font_size = font_size - 1
            return self.calculate_font_size(stringa, font_size, dimensione_label)
        else:
            return font_size

I parametri passati alla funzione sono:

  • stringa, cioè il testo che verrà scritto nella label
  • font_size, è l'attuale dimensione del font della label
  • dimensione_label, è la dimensione in pixel della label

I vari step della funzione sono:

  • creazione di un font temporaneo definendo la family (nel nostro caso Roboto Condensed) e la size (parametro della funzione)
  • attraverso il metodo measure si ottiene la lunghezza in pixel della stringa
  • controllo della dimensione, se la dimensione in pixel della stringa è maggiore della lunghezza della label allora viene rimpicciolito di un punto il font e viene chiamata ricorsivamente la funzione, altrimenti viene ritornata la dimensione del font

 

Commenti

Condividi nei social network

Newsletter

Iscriviti alla newsletter