[Python] Tkinter e Canvas.create_text

Manlio Perillo manlio_perillo a libero.it
Mar 9 Feb 2010 12:17:16 CET


Daniele.zambelli ha scritto:
> 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. 


Ti stai scontrando con i problemi relativi all'encoding del testo.
Trovi diversi threads riguardo Unicode.

> 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.
> 

Dipende da come č impostato l'encoding di sistema.
Se usi stringhe normali, e non Unicode, sei in cerca di guai.

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

Il prefisso `u` serve a creare una stringa Unicode.
Se non vuoi che i tuoi utenti debbano fare questo, ti conviene passare a
Python 3.x, in cui le stringhe sono Unicode di default.

> Grazie per l'attenzione.
> 


Ciao  Manlio


Maggiori informazioni sulla lista Python