<html><div style='background-color:'><DIV class=RTE>
<P><BR><BR></P></DIV>
<DIV></DIV>&gt;From: python-es-request@aditel.org 
<DIV></DIV>&gt;Reply-To: python-es@aditel.org 
<DIV></DIV>&gt;To: python-es@aditel.org 
<DIV></DIV>&gt;Subject: Resumen de Python-es, Vol 261, Envío 6 
<DIV></DIV>&gt;Date: Sun, 11 Jan 2004 23:49:11 +0100 (CET) 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Envie los mensajes para la lista Python-es a 
<DIV></DIV>&gt; python-es@aditel.org 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Para subscribirse o anular su subscripción a través de WEB 
<DIV></DIV>&gt; http://listas.aditel.org/listinfo/python-es 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;O por correo electrónico, enviando un mensaje con el texto "help" en 
<DIV></DIV>&gt;el asunto (subject) o en el cuerpo a: 
<DIV></DIV>&gt; python-es-request@aditel.org 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Puede contactar con el responsable de la lista escribiendo a: 
<DIV></DIV>&gt; python-es-owner@aditel.org 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Si responde a algún contenido de este mensaje, por favor, edite la 
<DIV></DIV>&gt;linea del asunto (subject) para que el texto sea mas especifico que: 
<DIV></DIV>&gt;"Re: Contents of Python-es digest...". Ademas, por favor, incluya en 
<DIV></DIV>&gt;la respuesta solo aquellas partes del mensaje a las que esta 
<DIV></DIV>&gt;respondiendo. 
<DIV></DIV>&gt; 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Asuntos del día: 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;1. Re: [Python-es]¿AlgunPythonsobre MS-DOS? (luis miguel morillas) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;2. Comentario en Barrapunto (Marcos Sánchez Provencio) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;3. Duda sobreimágenesen wxPython (TomásJavier Robles Prado) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;4. Dudas sobre manejo de TKinter (visualnex) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;5. Proteccion de codigo abierto en la emporesa (visualnex) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;6. RE: Proteccion de codigo abierto en la emporesa 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (fernando miguel villarroel noriel) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;7. Internacionalizacion - dudas varias (Toni Martínez) 
<DIV></DIV>&gt; 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;---------------------------------------------------------------------- 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Message: 1 
<DIV></DIV>&gt;Date: Fri, 9 Jan 2004 22:58:24 +0100 
<DIV></DIV>&gt;From: luis miguel morillas <MORILLAS@POSTA.UNIZAR.ES>
<DIV></DIV>&gt;Subject: Re: [Python-es]¿AlgunPythonsobre MS-DOS? 
<DIV></DIV>&gt;To: Jose Manuel <JMGA4@ERESMAS.COM>
<DIV></DIV>&gt;Cc: python-es@aditel.org 
<DIV></DIV>&gt;Message-ID: &lt;20040109215824.GA2532@marmota&gt; 
<DIV></DIV>&gt;Content-Type: text/plain; charset=iso-8859-1 
<DIV></DIV>&gt; 
<DIV></DIV>&gt; 
<DIV></DIV>&gt; Asunto: [Python-es]&nbsp;&nbsp;¿AlgunPython sobre MS-DOS? 
<DIV></DIV>&gt; Fecha: vie, dic 26, 2003 at 04:32:15 +0100 
<DIV></DIV>&gt; 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Citando a&nbsp;&nbsp;Jose Manuel (jmga4@eresmas.com): 
<DIV></DIV>&gt; &gt; He probado PythonD, y no me funciona, me da fallo por el tema de los 
<DIV></DIV>&gt; &gt; archivos con nombres largos(supongo) me daba un fallo que no encontraba 
<DIV></DIV>&gt; &gt; un archivo que no recuerdo el nombre, pero era un .zip . 
<DIV></DIV>&gt; &gt; 
<DIV></DIV>&gt; &gt; ??Alguna sugerencia? 
<DIV></DIV>&gt; &gt; Por cierto, he seguido puesto SET PYTHONCASEOK=1 y sigue sin funcionar. 
<DIV></DIV>&gt; &gt; 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Aquí tienes un link http://phd.pp.ru/Software/Python/py4dos.txt 
<DIV></DIV>&gt;Prueba y cuenta ;) 
<DIV></DIV>&gt; 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Un saludo. 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;-- 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Luis Miguel 
<DIV></DIV>&gt; 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;------------------------------ 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Message: 2 
<DIV></DIV>&gt;Date: Sat, 10 Jan 2004 12:44:36 +0100 
<DIV></DIV>&gt;From: Marcos Sánchez Provencio<RAPTO@ARRAKIS.ES> 
<DIV></DIV>&gt;Subject: [Python-es] Comentario en Barrapunto 
<DIV></DIV>&gt;To: La lista de python en castellano <PYTHON-ES@ADITEL.ORG>
<DIV></DIV>&gt;Message-ID: &lt;3FFFE5A4.9030302@arrakis.es&gt; 
<DIV></DIV>&gt;Content-Type: text/plain; charset=ISO-8859-15; format=flowed 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;http://barrapunto.com/article.pl?sid=04/01/10/1039204&amp;mode=thread 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Sobre la comparativa entre lenguajes de programación que salió hace poco 
<DIV></DIV>&gt;en daily python url. 
<DIV></DIV>&gt; 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;------------------------------ 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Message: 3 
<DIV></DIV>&gt;Date: Sat, 10 Jan 2004 13:14:28 +0100 
<DIV></DIV>&gt;From: TomásJavier Robles Prado <TJAVIER@USUARIOS.RETECAL.ES>
<DIV></DIV>&gt;Subject: [Python-es] Duda sobreimágenesen wxPython 
<DIV></DIV>&gt;To: Lista Python <PYTHON-ES@ADITEL.ORG>
<DIV></DIV>&gt;Message-ID: 
<DIV></DIV>&gt; &lt;1073736827.13600.33.camel@cable197a010.usuarios.retecal.es&gt; 
<DIV></DIV>&gt;Content-Type: text/plain; charset=ISO-8859-15 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Hola a todos, 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Remito aquí una duda que me ha llegado: 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Soy estudiante de Ingenieria Informatica, y estoy desarrollando una 
<DIV></DIV>&gt;interfaz grafica en python con wxPython y wxGlade. 
<DIV></DIV>&gt;Puesto que he leido tu pagina, y la considero de gran interes y ayuda, 
<DIV></DIV>&gt;me 
<DIV></DIV>&gt;gustaria comentarte el problema con el q me enfrento, por si pudieses y 
<DIV></DIV>&gt;quisieras ayudarme. 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Lo q quiero hacer por ahora es un programa que lanze una ventana en la 
<DIV></DIV>&gt;cual se cargue una imagen. Bien, esto ya lo he hecho y funciona 
<DIV></DIV>&gt;persectamente, sin embargo, lo que no soy capaz es de hacer una funcion 
<DIV></DIV>&gt;q me devuelve las coordenadas del raton una vez pulsado el boton 
<DIV></DIV>&gt;izquierdo sobre dicha imagen. 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Resumiendo, tengo una ventana q carga una imagen, y una funcion q se 
<DIV></DIV>&gt;ejecuta cada vez q se pulsa el boton izquierdo sobre dicha imagen (el 
<DIV></DIV>&gt;evento funciona), pero no se que código debo meter dentro de dicha 
<DIV></DIV>&gt;funcion para q me imprima en pantalla las coordenadas. 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;He probado a usar la funcion mouse_estate() y getsyx(), pero no se si 
<DIV></DIV>&gt;sirve para lo q quiero, o ne se usarla. 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Te agradeceria, si es posible, me comentases que funciones debo usar, o 
<DIV></DIV>&gt;me enviases un ejemplo de codigo. 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Muchas gracias, y un saludo 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Alberto 
<DIV></DIV>&gt; 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;A ver si alguien puede ayudarle. 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;-- 
<DIV></DIV>&gt;Un saludo, 
<DIV></DIV>&gt;Tomás Javier Robles Prado 
<DIV></DIV>&gt;http://milugar.doesntexist.org 
<DIV></DIV>&gt; 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;------------------------------ 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Message: 4 
<DIV></DIV>&gt;Date: Sun, 11 Jan 2004 11:36:00 -0300 
<DIV></DIV>&gt;From: "visualnex" <VISUALNEX@TUTOPIA.COM>
<DIV></DIV>&gt;Subject: [Python-es] Dudas sobre manejo de TKinter 
<DIV></DIV>&gt;To: <PYTHON-ES@ADITEL.ORG>
<DIV></DIV>&gt;Message-ID: &lt;005d01c3d850$3f03c1e0$067ba8c0@aa&gt; 
<DIV></DIV>&gt;Content-Type: text/plain; charset="iso-8859-1" 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;#Hola, 
<DIV></DIV>&gt;# 
<DIV></DIV>&gt;#antes que nada, te recomiendo encarecidamente que leas los documentos 
<DIV></DIV>&gt;introductorios #sobre Tkinter. Te aclarán muchas cosas. El problemas es que 
<DIV></DIV>&gt;están en inglés y creo que #no hay traducción. Están en: 
<DIV></DIV>&gt;#http://www.pythonware.com/library/tkinter/an-introduction-to-tkinter.pdf y 
<DIV></DIV>&gt;#http://www.nmt.edu/tcc/help/pubs/tkinter.pdf 
<DIV></DIV>&gt;#si hay más debería encontrarlo siempre en: 
<DIV></DIV>&gt;#http://www.python.org/topics/tkinter/doc.html# 
<DIV></DIV>&gt;#Saludos, Erny 
<DIV></DIV>&gt;#.... 
<DIV></DIV>&gt;Lei los apuntes, pero a veces no son lo suficientemente claros para lo que 
<DIV></DIV>&gt;uno busca, 
<DIV></DIV>&gt;o si la respuesta esta ahi, falta una palabrita para darme cuenta. Gracias 
<DIV></DIV>&gt;por tus 
<DIV></DIV>&gt;modificaciones. Opte por utilizar Grid para acomodar las etiquetas y demas. 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;&nbsp;&nbsp;# P: Porque se me "cuelga" la aplicacion y no sale en ... 
<DIV></DIV>&gt;&nbsp;&nbsp;# R: a mi no se me cuelga. de todos modos, es mejor terminar bien ... 
<DIV></DIV>&gt;&nbsp;&nbsp;#Evento para salir de la ventana principal 
<DIV></DIV>&gt;&nbsp;&nbsp;#def bSalir(self): 
<DIV></DIV>&gt;&nbsp;&nbsp;#&nbsp;&nbsp; self.quit() 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;se me "cuelga" utilizandolo desde el idle paytonwin, desde el IDLE nativo 
<DIV></DIV>&gt;no. 
<DIV></DIV>&gt;lo solucione poniendo: 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.frame.master.destroy() 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.frame.quit() 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;AHORA paso a una nueva consulta, el objetivo es ver si la logica que uso 
<DIV></DIV>&gt;para 
<DIV></DIV>&gt;llamar a otras pantallas desde una principal y regresar esta bien. 
<DIV></DIV>&gt;Agradecere 
<DIV></DIV>&gt;sugerencias:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; procedimientos: consulta, mostrar,ocultar 
<DIV></DIV>&gt;copio todo el codigo fuente por si hay otras sugerencias! ... 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;******************************************************** 
<DIV></DIV>&gt;"""Aplicacion de Gestion de Clientes basada en: 
<DIV></DIV>&gt;PythonWin 2.2.3,TKinter,Win32all build 162 
<DIV></DIV>&gt;por Marcelo Ametller - 2004 v0.0.2 - Cordoba,Argentina. 
<DIV></DIV>&gt;Consultas y sug: visualnex@tutopia.com&nbsp;&nbsp;,version reducida""" 
<DIV></DIV>&gt;from Tkinter import * 
<DIV></DIV>&gt;import sys 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;class FiInicio: 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; """Clase para mostrar una ficha de un cliente""" 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; def __init__(self, master): 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.frame = Frame(master,width=300,height=150) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.crearInterfaz() 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; def crearInterfaz(self): 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame=self.frame 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame.master.protocol("WM_DELETE_WINDOW",self.close) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; menubar=Menu(frame) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; menubar.add_command 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; climenu = Menu(menubar,tearoff=0) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; climenu.add_command(label="Consulta",command=self.consulta) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; menubar.add_cascade(label="Clientes",menu=climenu) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame.master.config(menu=menubar) 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #Muestro ventana principal 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame.grid() 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; def consulta(self): 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.ocultar() 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #llamo a la aplicacion para mostrar 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #la ficha de cliente 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ini=Tk() 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; app = FiCliente(ini) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ini.mainloop() 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #Mostrar Pantalla inicial 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.mostrar() 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; def ocultar(self): 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.frame.master.withdraw() 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; def mostrar(self): 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.frame.master.deiconify() 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; def close(self): 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.frame.master.destroy() 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.frame.quit() 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;class FiCliente: 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; """Clase para mostrar una ficha de un cliente""" 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; def __init__(self, master): 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.frame = Frame(master,width=300,height=150) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.crearInterfaz() 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; def crearInterfaz(self): 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame=self.frame 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame.master.title('FICHA DE CLIENTE') 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame.master.geometry(rootWinPos) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame.master.protocol("WM_DELETE_WINDOW",self.close) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Label(frame,text="Codigo:").grid(row=0,col=0,sticky=W) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.eCodigo=Entry(frame, width=6) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.eCodigo.grid(row=0,col=1,sticky=W, padx=3, pady=3) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.eCodigo.focus_force() 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Label(frame,text="Apellido:").grid(col=0,sticky=W) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.eApellido=Entry(frame,width=30) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.eApellido.grid(row=1,col=1,sticky=W, padx=3,pady=3) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.fBot=Frame(frame) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Button( self.fBot, width=6, text = "Buscar", 
<DIV></DIV>&gt;command=self.bBuscar ).grid(row=0,col=0) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Button( self.fBot, width=6, text = "Salir", 
<DIV></DIV>&gt;command=self.close ).grid(row=0,col=2) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.fBot.grid(col=1) 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #Muestro ventana principal 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame.pack(expand=YES, fill=BOTH) 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; def bBuscar(self):&nbsp;&nbsp;#Evento al pulsar Boton grabar 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; """Obtiene los datos de un cliente de la clase Clientes""" 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unCli=Clientes() 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Datos=unCli.Ver() 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.Llenar(Datos) 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; def Limpiar(self): 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; """Limpia el contenido de los campos de pantalla""" 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.eCodigo.delete(0,END) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.eApellido.delete(0,END) 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; def Llenar(self,Datos): 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; """LLena los campos de pantalla con sus respectivos valores""" 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.Limpiar() 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.eCodigo.insert(END,Datos["Codigo"]) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.eApellido.insert(END,Datos["Apellido"]) 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; def close(self): 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.frame.master.destroy() 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.frame.quit() 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;#Declaracion de constantes de la aplicacion 
<DIV></DIV>&gt;rootWinPos = "+150+150" 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;class Clientes: 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; """Clase para el manejo de clientes""" 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; def __init__(self): 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pass 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; def Ver(self): 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; """Devuelve los datos de un cliente predefinido""" 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Datos = {} 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Datos["Codigo"]="010001" 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Datos["Apellido"]="Gianotti Walter" 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Datos["Calle"]="Av Colon 409" 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Datos["Localidad"]="Cordoba" 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return Datos 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;class MyApp: 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; """Aplicacion Principal Gestion de Clientes""" 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; root=Tk() 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; app = FiInicio(root) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; root.mainloop() 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; sys.exit() 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;myapp = MyApp() 
<DIV></DIV>&gt;******************************************************** 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Gracias y saludos. 
<DIV></DIV>&gt;Marcelo 
<DIV></DIV>&gt; 
<DIV></DIV>&gt; 
<DIV></DIV>&gt; 
<DIV></DIV>&gt; 
<DIV></DIV>&gt; 
<DIV></DIV>&gt; 
<DIV></DIV>&gt; 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;------------------------------ 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Message: 5 
<DIV></DIV>&gt;Date: Sun, 11 Jan 2004 11:39:11 -0300 
<DIV></DIV>&gt;From: "visualnex" <VISUALNEX@TUTOPIA.COM>
<DIV></DIV>&gt;Subject: [Python-es] Proteccion de codigo abierto en la emporesa 
<DIV></DIV>&gt;To: <PYTHON-ES@ADITEL.ORG>
<DIV></DIV>&gt;Message-ID: &lt;006601c3d850$b03a4d20$067ba8c0@aa&gt; 
<DIV></DIV>&gt;Content-Type: text/plain; charset="iso-8859-1" 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Hola, 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Vengo del ambiente windows, visual basic, net , etc. 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Opte por Linux,Windows y Python. 
<DIV></DIV>&gt;Mi duda es la siguiente: Como protejo el codigo fuente de una aplicacion de una 
<DIV></DIV>&gt;empresa, para que otros usuarios no modifiquen rutinas especificas para que falle o 
<DIV></DIV>&gt;para adulterar datos de clientes, cuentas, etc... , ya que python no dispone de .exe 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;saludos 
<DIV></DIV>&gt;Marcelo 
<DIV></DIV>&gt; 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;------------ próxima parte ------------ 
<DIV></DIV>&gt;Se ha borrado un adjunto en formato HTML... 
<DIV></DIV>&gt;URL: /archivos/python-es/attachments/20040111/42bb20b2/attachment-0001.html 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;------------------------------ 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Message: 6 
<DIV></DIV>&gt;Date: Sun, 11 Jan 2004 15:07:53 +0000 
<DIV></DIV>&gt;From: "fernando miguel villarroel noriel" <VISUALLINUX@HOTMAIL.COM>
<DIV></DIV>&gt;Subject: RE: [Python-es] Proteccion de codigo abierto en la emporesa 
<DIV></DIV>&gt;To: python-es@aditel.org 
<DIV></DIV>&gt;Message-ID: <LAW12-F9TANGWINIMNM00004C72@HOTMAIL.COM>
<DIV></DIV>&gt;Content-Type: text/plain; charset=iso-8859-1; format=flowed 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Hola, la aplicacion la tienes corriendo en Linux, si es asi bien le das 
<DIV></DIV>&gt;permisos solo al dueño de la aplicacion y al resto dependiendo de lo que 
<DIV></DIV>&gt;necesites (grupos y otros) les deniegas todo lectura, escritura y ejecucion. 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Fernando. 
<DIV></DIV>&gt; 
<DIV></DIV>&gt; &gt;From: "visualnex" <VISUALNEX@TUTOPIA.COM>
<DIV></DIV>&gt; &gt;Reply-To: La lista de python en castellano <PYTHON-ES@ADITEL.ORG>
<DIV></DIV>&gt; &gt;To: <PYTHON-ES@ADITEL.ORG>
<DIV></DIV>&gt; &gt;Subject: [Python-es] Proteccion de codigo abierto en la emporesa 
<DIV></DIV>&gt; &gt;Date: Sun, 11 Jan 2004 11:39:11 -0300 
<DIV></DIV>&gt; &gt; 
<DIV></DIV>&gt; &gt;Hola, 
<DIV></DIV>&gt; &gt; 
<DIV></DIV>&gt; &gt;Vengo del ambiente windows, visual basic, net , etc. 
<DIV></DIV>&gt; &gt; 
<DIV></DIV>&gt; &gt;Opte por Linux,Windows y Python. 
<DIV></DIV>&gt; &gt;Mi duda es la siguiente: Como protejo el codigo fuente de una aplicacion de 
<DIV></DIV>&gt; &gt;una 
<DIV></DIV>&gt; &gt;empresa, para que otros usuarios no modifiquen rutinas especificas para que 
<DIV></DIV>&gt; &gt;falle o 
<DIV></DIV>&gt; &gt;para adulterar datos de clientes, cuentas, etc... , ya que python no 
<DIV></DIV>&gt; &gt;dispone de .exe 
<DIV></DIV>&gt; &gt; 
<DIV></DIV>&gt; &gt;saludos 
<DIV></DIV>&gt; &gt;Marcelo 
<DIV></DIV>&gt; &gt; 
<DIV></DIV>&gt; &gt; 
<DIV></DIV>&gt; &gt;_______________________________________________ 
<DIV></DIV>&gt; &gt;Python-es mailing list 
<DIV></DIV>&gt; &gt;Python-es@aditel.org 
<DIV></DIV>&gt; &gt;http://listas.aditel.org/listinfo/python-es 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;_________________________________________________________________ 
<DIV></DIV>&gt;Charla con tus amigos en línea mediante MSN Messenger: 
<DIV></DIV>&gt;http://messenger.latam.msn.com/ 
<DIV></DIV>&gt; 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;------------------------------ 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Message: 7 
<DIV></DIV>&gt;Date: Sun, 11 Jan 2004 23:44:46 +0100 
<DIV></DIV>&gt;From: Toni Martínez<PYTHON@AMMSOFT.COM> 
<DIV></DIV>&gt;Subject: [Python-es] Internacionalizacion - dudas varias 
<DIV></DIV>&gt;To: "Python Lista Aditel" <PYTHON-ES@ADITEL.ORG>
<DIV></DIV>&gt;Message-ID: &lt;000501c3d894$839befa0$020010ac@Host&gt; 
<DIV></DIV>&gt;Content-Type: text/plain; charset="iso-8859-1" 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Estoy aprendiendo como preparar las futuras aplicaciones para que funcionen 
<DIV></DIV>&gt;en las diferentes lenguas de los operadores de la misma. 
<DIV></DIV>&gt;Todo va bien de momento, pero no termino de dar el tema por completado. 
<DIV></DIV>&gt;Intentaré explicarme: 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Entorno de trabajo Windows 2000 + Python 2.3.3 + wxpython + PDO para 
<DIV></DIV>&gt;gestionar las bases de datos (Oracle, Mysql y&nbsp;&nbsp;Postgress) 
<DIV></DIV>&gt;Tengo varios módulos (sintetizaré al máximo) 
<DIV></DIV>&gt;He generado un archivo etiquetas.mo mediante pygettext.py y msgfmt.py 
<DIV></DIV>&gt;situándolo en .\locale\es\LC_MESSAGES 
<DIV></DIV>&gt;Y otro en .\locale\fr\LC_MESSAGES con la traducción en francés. 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Módulos: 
<DIV></DIV>&gt;login.py ventana de identificación del operador 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;#cargamos el idioma por defecto de la aplicación 
<DIV></DIV>&gt;import gettext 
<DIV></DIV>&gt;gettext.translation("etiquetas", ".\locale",languages=['es']).install() 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;# y se asignan los valores a las etiquetas y botones pertinentes 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.staticText1.SetLabel(_('Operador :')) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.staticText2.SetLabel(_('Clave Acceso :')) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.btcancelar.SetLabel(_("&amp;Cancelar")) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.btaplicar.SetLabel(_("&amp;Aceptar")) 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;inicio.py menú principal de la aplicación 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;# cargamos el idioma del operador (lo hemos sacado de la base de datos tabla 
<DIV></DIV>&gt;operadores) 
<DIV></DIV>&gt;import gettext 
<DIV></DIV>&gt;..... 
<DIV></DIV>&gt;..... 
<DIV></DIV>&gt;lang = rs.fields['OP_IDIOMA'].value 
<DIV></DIV>&gt;gettext.translation("etiquetas", ".\locale",languages=[lang]).install() 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;# y mostramos el menú y elementos que necesitemos (todos ellos en la lengua 
<DIV></DIV>&gt;del operador). 
<DIV></DIV>&gt;........ 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;# ahora desde el modulo inicio.py al seleccionar una opción determinada 
<DIV></DIV>&gt;importo el modulo empleados.py 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;1.- AQUI tengo la primera duda. 
<DIV></DIV>&gt;Necesito volver a realizar el gettext.translation("..... dentro del 
<DIV></DIV>&gt;empleados.py 
<DIV></DIV>&gt;Sino, las etiquetas _("...") no son traducidas. 
<DIV></DIV>&gt;¿Hay alguna manera de que no tenga que ir haciendo el gettext en cada 
<DIV></DIV>&gt;módulo? 
<DIV></DIV>&gt;Ya que hasta que no vuelva a cambiar de operador el idioma será el mismo. 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;2.- El fichero PO resultante del proceso pygettext.py 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; a.- Si el charset es el iso-8859-1, lo que estoy haciendo será 
<DIV></DIV>&gt;compatible en Linux u otras plataformas? 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; b.- Los caracteres acentuados los ha convertido en Unicode (creo) por 
<DIV></DIV>&gt;ejemplo la í = \355 la ó \363 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hay alguna forma que pygettext.py mantenga los caracteres ASCII 
<DIV></DIV>&gt;normales o es aconsejable dejarlos tal como quedan. 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; El resultado final usando los ascii (í,ó,..) o los (\355,\363...) ha 
<DIV></DIV>&gt;sido el mismo. Las ventanas muestran las vocales acentuadas. 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ¿En otras plataformas que pasaría? 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;3.- Cuando se realicen modificaciones en los módulos y aparezcan nuevas 
<DIV></DIV>&gt;etiquetas a traducir: 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; ¿Cómo se gestionan los ficheros PO para saber que nuevas etiquetas deben 
<DIV></DIV>&gt;ser traducidas y o cuales han sido modificadas? 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Lo pregunto por si hay alguna herramienta que facilite la tarea. Ya que 
<DIV></DIV>&gt;si hay que hacerlo a pelo,"mi gozo en un pozo". 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;4.- Hay alguna forma de poder decirle que la localización del fichero MO no 
<DIV></DIV>&gt;sea la carpeta LC_MESSAJES (Pura curiosidad!) 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Preferiría tener todas las traducciones en un sólo directorio, con 
<DIV></DIV>&gt;nombres diferentes 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gettext.translation("etiq_" + lang, ".\locale").install() 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Saludos. 
<DIV></DIV>&gt;_______________________________________________ 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;python@ammsoft.com 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;{8~~~~~~~~~~~~~~~~ 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;------------ próxima parte ------------ 
<DIV></DIV>&gt;Se ha borrado un adjunto en formato HTML... 
<DIV></DIV>&gt;URL: /archivos/python-es/attachments/20040111/cf62bca8/attachment.html 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;------------------------------ 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;_______________________________________________ 
<DIV></DIV>&gt;Python-es mailing list 
<DIV></DIV>&gt;Python-es@aditel.org 
<DIV></DIV>&gt;http://listas.aditel.org/listinfo/python-es 
<DIV></DIV>&gt; 
<DIV></DIV>&gt; 
<DIV></DIV>&gt;Fin de Resumen de Python-es, Vol 261, Envío 6 
<DIV></DIV>&gt;********************************************* 
<DIV></DIV></div><br clear=all><hr>MSN 8 helps <a href="http://g.msn.com/8HMBEN/2752??PS=">ELIMINATE E-MAIL VIRUSES.</a> Get 2 months FREE*.</html>