[pyar] WxPython - Dudas de principiante.

PythonJourney pythonjourney en gmail.com
Lun Mar 21 21:44:29 ART 2011


Hola...

te recomiendo que para poder recibir ayuda con cosas de wxpython, 
coloques un pequeño codigo que pueda ser ejecutado, como lo piden en la 
lista de wxpython.. sin una muestra ejecutable del codigo a veces es 
dificil ayudar o ver el problema en realidad..


lo unico que podria decir para ayudarte  es que en este enlace[0] hay 
una buena discusion sobre los EVT_SET_FOCUS

[0] http://www.blog.pythonlibrary.org/2009/08/27/wxpython-learning-to-focus/
El 21/03/2011 03:41 p.m., matiasgsanchez en gmail.com escribió:
> Buenas a todos, tuve un poco de tiempo y decidì comenzar a migrar un
> proyecto que tengo hecho en .NET C# a python. Sin sentido alguno,
> solamente para aprender. Hice algunas cosas en consola, pero ahora
> cuando me topè con Wxpython, algunas cosas resultaron un poco
> extrañas.
> Estoy usando Eclipse + Pydev y wxFormBuilder.
>
> Tiro algunas preguntas puntuales, y lògicamente cualquier crìtica
> constructiva sobre como desarrollar y buenas pràcticas serà
> bienvenida.
>
> Primero:
>
> Porque el EventHandler txtChange, en el siguiente caso se dispara y en
> el segundo caso no? (No tengamos en cuenta que el MessageBox no para
> de mostrarse nunca xD, es un bug premeditado
> ---------------------CASO1----------------------------
>
> import wx
> from wx import xrc
> import sys
>
> class MainFrame(object):
>
>      def __init__(self, xml):
>          self.xml = xml
>          self.frame = xml.LoadFrame(None,'MyFrame1')
>          self.frame.Bind(wx.EVT_BUTTON, self.btnClick,
> id=xrc.XRCID('btnBoton1'))
>
>          self.txtTextBox = xrc.XRCCTRL(self.frame, 'txtTextBox')
>          self.txtTextBox.Bind(wx.EVT_SET_FOCUS, self.txtChange)
>
>          self.txtTextBox.SetValue('Valor de prueba')
>          self.frame.Show()
>
>      def btnClick(self, evt):
>          ret  = wx.MessageBox('Salir?', 'Question', wx.YES_NO | wx.NO_DEFAULT)
>          if ret == wx.YES:
>              self.frame.Destroy();
>              sys.exit(0)
>
>      def txtChange(self, evt):
>          wx.MessageBox('Ventana prueba','Ventana')
>
> class proyPrueba(wx.App):
>
>      def OnInit(self):
>          xml = xrc.XmlResource('filePrueba.xrc')
>          self.MainFrame = MainFrame(xml)
>          return True
>
>
> if __name__ == '__main__':
>      app = proyPrueba(0)
>      app.MainLoop()
>
>
> ------------------------------------CASO2----------------------------------------
> Para simplificar, lo unico que modifiquè fue la asignaciòn de la
> variable txtTextBox. Osea, directamente creo el eventhandler en una
> linea.
> (http://wiki.wxpython.org/index.cgi/XRCTutorial)
>
> No funciona el wx.EVT_SET_FOCUS pero si el wx.EVT_BUTTON. Algùn error
> conceptual que no estè teniendo en cuenta?
>
> import wx
> from wx import xrc
> import sys
>
> class MainFrame(object):
>
>      def __init__(self, xml):
>          self.xml = xml
>          self.frame = xml.LoadFrame(None,'MyFrame1')
>          self.frame.Bind(wx.EVT_BUTTON, self.btnClick,
> id=xrc.XRCID('btnBoton1'))
>          self.frame.Bind(wx.EVT_SET_FOCUS, self.txtChange,
> id=xrc.XRCID('txtTextBox'))
>
>          self.frame.Show()
>
>      def btnClick(self, evt):
>          ret  = wx.MessageBox('Salir?', 'Question', wx.YES_NO | wx.NO_DEFAULT)
>          if ret == wx.YES:
>              self.frame.Destroy();
>              sys.exit(0)
>
>      def txtChange(self, evt):
>          wx.MessageBox('Ventana prueba','Ventana')
>
> class proyPrueba(wx.App):
>
>      def OnInit(self):
>          xml = xrc.XmlResource('filePrueba.xrc')
>          self.MainFrame = MainFrame(xml)
>          return True
>
>
> if __name__ == '__main__':
>      app = proyPrueba(0)
>      app.MainLoop()
>
>
> Segundo:
>
> Hay alguna manera de lograr que el autocompletado funcione tambien
> para las variables que van a asumir el tipo en tiempo de ejecuciòn?.
> No se si me explico correctamente. Mejor ejemplifico.
> La variable txtTextBox que uso en el primer ejemplo, para guardar la
> referencia al objeto textBox, cuando tipeo "txtTextBox.(punto)" no
> tira ninguna propiedad del objeto. Ahora bien, para ver las
> propiedades disponibles del textbox estoy haciendo "wx.TextCtrl....".
> En ese caso si me muestra las props y me tengo que fijar la que estoy
> buscando, copiar pegar. Es medio molesto, seguramente hay alguna otra
> alternativa. Alguien que no quiera verme maldecir en todos los
> idiomas, me darìa algun consejo?
>
>
> Dudas ya està. Ahora queda el espacio para aquellos que quieran
> recomendarme algo:
> Tips:
> 1) Maneras de definiciòn de handlers simples.
> 2) Yo estoy generando el archivo xrc y levantandolo como recurso. Es
> correcto? Hay alguna manera mas facil?
>
> 3) etc, etc, etc...
>
> Desde ya gracias. Deberìa haber preguntado todas estas cosas en la
> Pyar de BsAs que habia muy buena onda, pero sinceramente todavia
> estaba sorprendido por la sintaxis nada mas, que no es poco xD.
>
> Salu2 a todos!,
>
> Matias.
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>




More information about the pyar mailing list