Comenzando con wxpython

Instalación de wxPython Phoenix

wxPython Phoenix es la última versión de wxPython (actualmente septiembre de 2016 sin lanzamiento oficial). Es compatible con Python 2 y Python 3. Puede descargar una versión instantánea (es decir, una rueda de Python) para su plataforma y la versión de Python aquí.

wxPython Phoenix utiliza un mecanismo en gran medida automatizado para generar los enlaces de Python para la biblioteca wxWidgets y la documentación. Documentación de Phoenix wxPython se genera específicamente para sí mismo utilizando Sphinx. Esto aumenta la claridad en comparación con la documentación de C++ de la compilación clásica, que incluye muchas sobrecargas que no están disponibles en wxPython.

Python y pip deben instalarse antes de poder instalar wxPython Phoenix.

Puede usar pip para instalar la versión Phoenix de wxPython. Este es el método recomendado actualmente:

python -m pip install --no-index --find-links=http://wxpython.org/Phoenix/snapshot-builds/ --trusted-host wxpython.org wxPython_Phoenix

Cuando use este comando, pip también instalará wxWidgets. Este complejo comando pip probablemente se convertirá en ‘pip install wxpython’ cuando Phoenix se lance oficialmente.

Nota: wxPython Phoenix se encuentra actualmente en versión beta y no tiene todos los widgets que tiene la versión clásica.

Instalación de wxPython Classic

wxPython Classic es una compilación Python 2 de la biblioteca wxPython. La generación de enlaces de python requiere una gran cantidad de intervenciones manuales y la documentación es simplemente la documentación de wxWidgets que contiene algunas anotaciones sobre los mecanismos de wxPython, por lo que normalmente hay un retraso de semanas a meses entre una nueva versión de wxWidgets y la versión correspondiente de wxPython. .

Vaya a la página descargar en el sitio web de wxPython para ver si ya existe una versión de wxPython que pueda descargar para su plataforma.

La última versión de Classic es 3.0.2.0

Ventanas

Hay instaladores para Python 2.6 y 2.7 para plataformas Windows de 32 y 64 bits en el sitio web. Simplemente descargue uno de estos y ejecútelos para instalarlo.

Nota: Asegúrese de descargar un instalador de wxPython para el Python correcto que haya instalado. Por ejemplo, si tiene Python 2.7 de 32 bits, entonces desea un instalador de wxPython de 32 bits

Mac

Si tiene OSX 10.5 o superior, querrá descargar e instalar la versión Cocoa de wxPython. La versión Cocoa también es compatible con Mac de 64 bits.

Si tiene una Mac con una versión de OSX inferior a 10.5, querrá la compilación Carbon.

Linux

Lo primero que debe verificar es el administrador de paquetes de su plataforma Linux (es decir, yum, apt-get, etc.) para ver si tiene una versión de wxPython que pueda instalar. Desafortunadamente, muchos paquetes de Linux para wxPython son para la versión 2.8.12.1 en lugar de la 3.0.2.0. Si su administrador de paquetes no tiene la última versión, probablemente tendrá que construirlo usted mismo.

Hay instrucciones de compilación para 3.0.2.0-Classic aquí

Hola Mundo

Una forma sencilla de crear un programa Hello World:

import wx
app = wx.App(redirect=False)
frame = wx.Frame(parent=None, id=wx.ID_ANY, title='Hello World')
frame.Show()
app.MainLoop()

Producción:

Salida de Hola Mundo

Un ejemplo más típico sería la subclase wx.Frame:

import wx

class MyFrame(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, title='Hello World')
        self.Show()

if __name__ == '__main__':
    app = wx.App(redirect=False)
    frame = MyFrame()
    app.MainLoop()

Esto también se puede reescribir para usar super de Python:

import wx  

class MyFrame(wx.Frame):
        
    def __init__(self, *args, **kwargs):
        """Constructor"""
        super(MyFrame, self).__init__(*args, **kwargs)
        self.Show()

if __name__ == '__main__':
    app = wx.App(False)
    frame = MyFrame(None, title='Hello World')
    app.MainLoop()

¿Qué es una serie de versiones de wxPython?

El proyecto wxWidgets ha adoptado el modelo de lanzamiento utilizado por el proyecto Linux Kernel donde hay conjuntos alternos de lanzamientos donde un conjunto se considera “estable” y el siguiente conjunto se considera “en desarrollo”. Para wxWidgets, “estable” y “desarrollo” no se refieren a errores, sino a la estabilidad de la API y la compatibilidad con versiones anteriores.

  • Estable: Durante la duración de la serie, las API existentes no se modifican, aunque se pueden agregar nuevos métodos de clase no virtual y similares. La compatibilidad binaria de las bibliotecas de C++ se mantiene al no permitir ningún cambio que modifique el tamaño en memoria o el diseño de las clases y estructuras. Esto puede y, a menudo, impone limitaciones sobre qué tipo de mejoras o correcciones de errores se pueden realizar en una serie de versiones estables; sin embargo, esto realmente solo afecta a la capa de C++ porque, en Python, la compatibilidad con versiones anteriores tiene connotaciones ligeramente diferentes.

  • Desarrollo: el objetivo principal de la serie de desarrollo de lanzamientos es agregar nuevas funciones o corregir problemas que no pudieron corregirse en una serie estable debido a problemas de compatibilidad binaria, todo en un esfuerzo por crear la próxima serie estable . Por lo tanto, durante la duración de la serie de desarrollo existente, las API pueden modificarse o eliminarse según sea necesario, aunque la mayoría de las veces la compatibilidad con el nivel de fuente de C++ se mantiene a través de funciones sobrecargadas o macros obsoletas, etc. Para wxPython, esto a menudo significa que habrá ser incompatibilidades a nivel de fuente porque no hay sobrecarga ni macros, y para admitir la nueva versión de la API, a veces se debe eliminar la versión anterior.

Debido a los problemas de compatibilidad binaria, la última versión de desarrollo de wxWidgets/wxPython a menudo puede tener menos errores que la última versión de la última serie estable. Sin embargo, existe la compensación de que las API pueden cambiar o evolucionar entre las versiones de la serie de desarrollo.

¿Cómo funcionan los números de versión?

Para lanzamientos, wxPython usa un número de versión de 4 componentes. Si bien esto se parece mucho a cómo se usan los números de versión en otros proyectos de código abierto, hay algunas diferencias sutiles. Entonces, para algún lanzamiento A.B.C.D, puede deducir lo siguiente:

  1. Serie de versiones: los primeros dos componentes del número de versión (A.B) representan la serie de versiones y si el componente B es un número par, entonces es una serie estable, si es un número impar, entonces es una serie de lanzamiento de desarrollo. Por ejemplo, 2.4, 2.6 y 2.8 son estables y la API está más o menos congelada dentro de cada serie, y 2.3, 2.5 y 2.7 son desarrollo y la API y la funcionalidad pueden cambiar o evolucionar según sea necesario.

Debido a esto, puede haber cambios bastante grandes entre una serie estable y la siguiente (por ejemplo, 2.4 a 2.6) y esto a menudo desconcierta a la gente porque en otros proyectos, los cambios de esa magnitud habrían provocado que el primer componente del número de versión cambiara. En su lugar, debe pensar en la combinación de A.B como el número principal de la versión.

  1. Número de versión: el tercer componente del número de versión (C) representa una de las versiones de una serie de versiones. Por ejemplo, 2.5.0, 2.5.1, 2.5.2, 2.5.3… son todas versiones de la serie de versiones 2.5. (Y dado que en este caso se trata de una serie de desarrollo, la API y la funcionalidad de 2.5.3 han evolucionado para ser diferentes en algunos lugares de lo que eran en 2.5.0). Las versiones de wxWidgets de C++ generalmente se detienen aquí y solo se realizan versiones de A.B.C.

  2. Número de versión secundaria o versión de wxPython: el cuarto componente del número de versión (D) se usa para representar una versión secundaria o versiones incrementales entre las versiones oficiales de wxWidgets. Estos lanzamientos incluyen correcciones para errores de wxWidgets que wxPython puede haber expuesto o mejoras menores que son importantes para wxPython. Esta no es una instantánea arbitraria de wxWidgets, sino una versión probada del código con correcciones y mejoras que aún no están disponibles en wxWidgets, excepto en el repositorio del código fuente.

Fuente: https://wiki.wxpython.org/ReleaseSeries