You are on page 1of 8

Aprende wxPython con ejemplos Pedro Jorge De Los Santos © 2016 Pedro Jorge De Los Santos .

i Lo básico . . . . . . . . . . . . . .Índice general Introducción . . 1 1 3 Controles básicos . . . . . . . . . . . . . . . . . . . . . . . 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Con clase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Una primera aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Introducción .

y como siempre.Lo básico Una primera aplicación Una aplicación muy básica en wxPython puede construirse con unas pocas líneas: 1 2 3 4 5 6 import wx app = wx. u"wxPython Demo") frame. para asegurar que el sistema de wxWidgets se ha inicializado correctamente ¹.Frame(None. si en el ejemplo anterior intenta inicializar el Frame antes de ¹https://wxpython.MainLoop() Imagen 01 Primero.App se utiliza para inicializar el sistema de wxPython y todo el conjunto de interfaces gráficas. que representa a la aplicación por si misma. importamos la librería wxPython para poder utilizar las clases y funciones disponibles en esta. y esta debe crearse antes de instanciar cualquier otro objeto gráfico de wxPython. Es más. wx.App.html .org/docs/api/wx. además de controlar el intercambio de información y el manejo de los eventos lanzados.App() frame = wx.Show() app. Cada aplicación debe tener una instancia wx. Posteriormente se debe instanciar un objeto de la clase wx.App.ID_ANY. La clase wx.App-class.

App object must be created first! Con la clase wx. Size size=DefaultSize. que es donde colocaremos todos los controles que componen una interfaz gráfica. long style=DEFAULT_FRAME_STYLE. String title=EmptyString.Frame se utiliza para mostrar en pantalla la ventana que hemos creado y todos los elementos que pudiera contener. Note que además de parentse puede especificar un id. **kwargs)) wx.py".Frame: >>> help(wx.__init__) Help on method __init__ in module wx. u"wxPython Demo") File "C:\Python27\lib\site-packages\wx-2.ID_ANY. wx.ID_ANY. .Frame creamos un objeto de tipo ventana._windows. para indicar que nuestro objeto frame no tiene un objeto padre.Frame. size=(300.new_Frame(*args.Frame. lista para recibir y manejar los eventos generados.py". line 580. necesitamos pasar algunos argumentos. *args. además de parent. Luego.Lo básico 2 wx. String name=FrameNameStr) -> Frame wxPython nos dice que necesitamos especificar al menos el argumento parent.PyNoAppError: The wx. el método MainLoop de wx.5-msw\wx\_windows. si recurrimos a la ayuda proporcionada por wxPython. Point pos=DefaultPosition. un id y un título (string que se muestra en la parte superior de la ventana).AWE\AWE\manuscript\src\ conceptos-elementales\primera_aplicacion.9. line 4._windows: __init__(self._core.App. la posición (position).Frame method __init__(self. por ejemplo. Para instanciar un objeto de la clase wx. in <module> frame = wx. Window parent. int id=-1.Frame_swiginit(self. En el ejemplo utilizado hemos pasado None como argumento. el tamaño (size)._windows_. si no llamamos a Show la ventana no se dibujará en la pantalla. Si quisiera especificar un tamaño inicial al Frame podría incluirse el argumento size como sigue: frame = wx. u"wxPython Demo". wx.200)) El método Show de la clase wx. in __init__ _windows_. En nuestro caso hemos pasado. respecto al constructor de wx.Frame(None.App es el que pone en funcionamiento toda la maquinaria de wxPython. un título (title).Frame(None. que es el objeto padre del Frame. entonces wxPython lanzará un error como el que se muestra enseguida (el cual es bastante explícito): Traceback (most recent call last): File "C:\Users\adminIS\Desktop\LABPro\_books_\PB1703 . **kwargs) unbound wx. el estilo (style) y un nombre (name).

1 2 3 4 5 6 7 8 9 10 11 import wx class MiFrame(wx.App() frame = MiFrame(None. y en esta ir agregando todos los controles gráficos que necesitemos para que la aplicación sea funcional. debido a la sintaxis de Python. algo como: super(MiFrame. donde.App ya nos lo sabemos. Y bueno. y de esa manera. definimos una clase MiFrame heredada de wx. se necesita mucho intercambio de información entre el objeto que lanza el evento y las funciones o rutinas que los manejan (handlers). lo único que hacemos es instanciar un objeto de la clase MiFrame.Frame. title=u"wxFrame Demo") app. self). Para llamar al método init de la superclase. Lo más común. y aquí en init es necesario llamar también al método init de la superclase. Debido a lo comentado en el párrafo anterior. también puede utilizar la otra notación que implica el uso de super.Show() if __name__=='__main__': app = wx. pero cuando querramos desarrollar una aplicación un poco más compleja vamos a tener muchos problemas con ese mismo enfoque.Frame. con unas cuantas líneas de código. pasándole como argumentos aquellos que hemos recibido desde el constructor de nuestra clase MiFrame.parent. claro está. es crear una clase que herede de wx.Lo básico 3 Con clase En la sección anterior vimos como desarrollar una aplicación wxPython muy elemental. Note que. . con los mismos argumentos que utilizaríamos para uno de wx.__init__(self.Frame. las aplicaciones en wxPyhon comúnmente se desarrollan utilizando un diseño orientado a objetos. Además. cuando se requiera programar las respuestas a los eventos.Frame): def __init__(self.__init__(*args. El método Show sirve. agregamos el método init que para efectos de este texto será nuestro constructor de la clase.Frame.**kwargs) self.**kwargs) Finalmente. Dentro del método init habrán de agregarse todos los controles (que veremos en la siguiente entrega) y hacer las conexiones de eventos requeridas. para mostrar el Frame en la pantalla.**kwargs): wx. puesto que lo hemos visto en la sección anterior.parent=parent. Todo esto está muy bien. el parámetro self será siempre el primer argumento del método init de la clase y superclase. típicamente se escriben clases heredadas de los controles gráficos de wxPython. aun con la ayuda de las funciones es un tanto difícil mantener el código legible.MainLoop() Primero. lo de la clase wx.

Controles básicos .