latin-1 en tkinter

Chema Cortes pych3m4 en gmail.com
Mar Jul 31 12:49:43 CEST 2007


El 31/07/07, ruben gomez <ruido_electronico en yahoo.es> escribió:

>   He visto algunos post en esta lista al respecto, pero no acabo de aclararme.  Disculpas si me repito.

Aquí estamos para lo que haga falta.

>   El problema es con los caracteres ñ, Ç, etc. (los de latin-1 o cp1252). Internamente no dan problemas; por ejemplo, tengo un entry que escribe en un text y puedo escribirlo con éstos (supongo que es porque el archivo va con la cabecera típica #  -*- coding: latin-1 -*-.)  Sin embargo, en el entry hay una función que le dice al programa que si el usuario ha tecleado, por ejemplo: mañana, haga una acción; pues bien, en este momento me imprime el siguiente warning:
>
>   Warning (from warnings module):
>
>   File: "el archivo python"
>
>   if text == 'mañana'
>
>   UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
>
>   ¿Alguna idea? Gracias por adelantado

Que yo sepa, Tk usa siempre unicode. El comentario de codificación (#
-*- coding: latin-1 -*-) sólo influye en las inicialización de cadenas
unicode.

En tu caso:

   if text == 'mañana'

Es una comparación entre una cadena unicode (text) y una cadena normal
('mañana'). Tienes que hacer que la comparación sea entre cadenas
unicode:

   if text == u'mañana'


Gracias al comentario de codificación, python sabe que tiene que crear
la cadena unicode a partir de la cadena 'mañana' codificada en latin1.




Más información sobre la lista de distribución Python-es