[Python] Tkinter e Canvas.create_text

Daniele.zambelli daniele.zambelli a inwind.it
Dom 7 Feb 2010 18:52:40 CET


Salve, ho un problema che non riesco a risolvere.
La libreria a cui sto lavorando dà all'utente la possibilità di creare degli 
oggetti testo in un canvas di Tkinter.

Funziona tutto senza problemi se il testo non contiene lettere accentate, se 
invece la stringa da visualizzare contiene lettere accentate allora non viene 
visualizzato niente. Esempio:

>>> Text(ip, 3, 3, 'lettera accentata: è')

non appare niente.

Se alla stringa antepongo il carattere "u" allora funziona correttamente:

>>> Text(ip, 3, 4, u'lettera accentata: è')

il testo viene visualizzato nella posizione corretta.

La libreria inizia con la riga:

# -*- coding: iso-8859-15 -*-

A complicare la faccenda ho notato che su alcune macchine il mio programma 
soffre di questo problema, su altre no.

Ho provato a cambiare font ma il problema persiste:

    self._font=tkFont.Font(family="Nimbus Sans L", size=self._width)
##    self._font=tkFont.Font(family="Helvetica", size=self._width)

Il comando che crea il testo è:

    self._id=self._cv.create_text(self._getbounds(), text=self._gettext(),
                                  fill=self._color, font=self._font)

Dove _getbounds() restituisce le coordinate e _gettext() restituisce la 
stringa da visualizzare.

Io vorrei evitare di chiedere all'utente di anteporre la lettera "u" alle 
stringhe che contengono caratteri particolari. Come potrei fare?

Grazie per l'attenzione.

-- 

Daniele                        www.fugamatematica.blogspot.com

                          giusto!
  _o)  (o_       (o_ _o)  nel verso
-./\\  //\.-     //\ /\\  forse è perché non guardiamo le cose
 _\_V  V_/_      V_/ \_V  Quando non ci capiamo,


Maggiori informazioni sulla lista Python