2010-07-26 13 views
9

Estoy pensando en crear algún tipo de IDE experimental para el diseño de hardware digital. Entonces no puedo decidir qué plataforma de brujas elegir.CPython vs. Jython vs. IronPython para desarrollo de GUI multiplataforma

Voy a tener un editor de texto con resaltado de sintaxis, algunos gráficos vectoriales y muchas ventanas con pestañas.

Mis objetivos: 1. hacer GUI usando componentes menos personalizados como sea posible. 2. para que sea tan multiplataforma como sea posible

(ya sé que CPython y Jython son multiplataforma de usar, pero ¿qué pasa con IronPython + Mono?)

Por lo tanto - la pregunta es sobre GUI - ¿Qué debería elegir?

Respuesta

9

IronPython with Mono es multiplataforma: para las plataformas admitidas por Mono, y para el conjunto de características admitidas por Mono (lo que significa que Windows Forms se admite bastante bien). Sin embargo, existen otras opciones para GUI toolkits are available, que pueden proporcionar mejores capacidades de "plataforma cruzada", o al menos una mejor sensación en plataformas que no son de Windows.

CPython dependerá del conjunto de GUI que elija. Personalmente, encontré que CPython with PyQt es la opción de GUI multiplataforma más útil de Python. Es muy potente, rico en funciones y funciona bastante bien.

Jython funcionará, pero personalmente no me gustan las opciones de la GUI (sin embargo, esto es una preferencia 100% personal).

5

Yo diría que si multiplataforma es un objetivo, olvídate de IronPython. Un lote de personas odia el infierno de dependencia que causa, por lo que será demasiado trabajo para ejecutarlo en algunos sistemas operativos/distribuciones. Jython sufrirá esto también, aunque en menor grado.

+0

Jython? Pensé que Java es una elección cruzada de plataforma cruzada. ¿Jython Halst

+0

IronPython con Mono es bastante fácil de ejecutar en otras plataformas, según mi experiencia. Mono es bastante sencillo de configurar y Windows Forms es compatible con la distribución ... –

+0

@Halst Exatcly: Es menos independiente de la plataforma que CPython porque Jython necesita Java y los enlaces Python-Java. CPython solo necesita CPython. Por lo tanto, es realmente menos multiplataforma si se tiene en cuenta que requiere más trabajo para ponerlo en marcha, ya que de forma predeterminada encontrará más plataformas con CPython pkgs. – Gianni

2

Eche un vistazo a GUI comparables escritas en python/jython/ironpython. Busque programas que le gusten y descubra qué usan. Supongo que la mayoría, si no todos, se escribirán en cpython + gtk o cpython + qt. Creo que todos los kits de herramientas gui en python son multiplataforma.

+0

http://bazaar.canonical.com/en/ tiene una gran GUI que es multiplataforma: está escrita en PyQt. También hay muchos escritos en PyGTK. –

5

Bueno, Mono no viene con la base de la mayoría de las distribuciones de Linux. Tampoco es una dependencia terriblemente ligera, y creo que es mucho más probable que Java ya tenga. ¿Planeas usar "Winforms" con Mono? Si es así, y no tiene experiencia con Winforms, lea sobre lo que otros tienen que decir :-) El otro .NET GUI toolkit es WPF, que desafortunadamente Mono no tiene planes de implementar.

Jython sería mejor también, porque puede usar SWT, que representa widgets nativos y ofrece muchas posibilidades de diseño fácilmente. O puede usar Jython con Swing, o cualquier otra cosa, incluso AWT si le gusta la fealdad.

Me gusta mucho wxPython (que se puede usar con CPython, que está en la mayoría de las distribuciones por defecto), ya que muestra widgets nativos atractivos en OSX, Windows y Linux (solo he visto los widgets Gnome en persona) wxPython es de lejos el juego de herramientas de GUI más fácil de usar que he usado, incluso programáticamente (es decir, diseño sin Glade o similar). También utilicé SWT, que me pareció bastante agradable, y Swing, que personalmente no me gusta mucho, y Winforms, que era una pesadilla con la que incluso intentaba hacer diseños simples.

He aquí una comparación rápida de la existencia del intérprete/Language Runtime por el sistema operativo

  • CPython
    • de Windows - Probablemente no está instalado, y que tendría que hacer un instalador no pitón instalar con su software :-P
    • Linux - Probablemente instalado (Ubuntu, Gentoo y RedHat todos tienen las herramientas del sistema que están escritas en Python y se ejecutan en CPython)
    • Mac - preinstaladas en OSX
  • Jython
    • de Windows - Probablemente instalado en algún momento de mi experiencia, a pesar de que no viene con
    • Linux - Probablemente instalado, pero lo más importante que nadie te odiaría por depender de ella como Mono
    • Mac - preinstalado en OSX ("Mac OS X Leopard viene con J2SE 5.0 preinstalado, basado en JDK 1.5.0_13_b05" - el sitio de Apple)
  • IronPython
    • Windows - Probablemente funcionará bien porque apuesto a que la mayoría de las personas tienen por lo menos .NET 2.0 si tienen una versión reciente de Windows
    • Linux - Probablemente no instalada - la única aplicación con la que he usado Mono en Linux era Rasterbator, que funcionaba bien, pero me sentí raro poner .NET en Linux
    • Mac - Ver arriba

yo elegiría un conjunto de herramientas GUI primero, ya que será mucho más impacto que la experiencia del usuario y dificultad general (yo elegiría wxPython pero SWT sería un segundo cercano), luego considere lo anterior y quizás también como desempate.

+0

También agregaría la restricción de que Jython no funciona con los módulos de python que requieren una interfaz C, por lo que si está esperando usar muchos módulos de python esto podría limitar la elección para usted – burkestar

1

Ya hay muchas respuestas, pero me gustaría agregar una cosa importante: independientemente de la biblioteca que aprenda, la mayoría de los principios serán los mismos cuando se mude a otra biblioteca.

No sé sobre Qt, pero para la mayoría de los programas de gráficos (en PyGTK o Tkinter) lo mejor que se puede hacer, en cuanto a la edición, es usar una imagen PIL (o algo similar) para dibujar y luego, dibuje esa imagen en su widget de lienzo, de lo contrario, puede perder datos de píxeles si se cubre su ventana.

3

Me enfrenté a esta misma pregunta aproximadamente hace un año. Después de ver todas las alternativas, terminé con CPython y PyQt. IMO, Qt/PyQt es, de lejos, la mejor opción entre todos los kits de herramientas GUI de Python. Después de golpear muchos errores en wxPython cambié a PyQt y nunca miré hacia atrás. Qt/PyQt son mucho más sólidos que los kits de herramientas wx en mi experiencia.

Uso exactamente la misma base de código y compilo ejecutables independientes con PyInstaller para Windows y Py2App para Mac (PyInstaller también se puede usar para Linux). Debido a que estos constructores incrustan el intérprete de Python y todas las dependencias, se lleva mucho de la molestia. El único problema es que necesitarás tanto Windows como Mac para hacer las compilaciones. Obtener todas las configuraciones correctas también puede ser un problema, pero es posible y el tiempo vale la pena invertir.

1

Puede usar Python 2.7 o 3.1 (CPython) con ttk (en la Biblioteca Standart en 2.7, 3.1), los temas de apoyo TTK (se ve bien y muy simple de codificación)

(1-st pantalla es editor de texto con pestañas y resaltado de sintaxis)ttk screenshots

2

Java es la plataforma más portátil. Jython está escrito en Java 100% puro. 'Dijo Nuff.

BTW Acabo de cambiar un proyecto CPython/GTK a Jython (tratando de eliminar la mayor cantidad de código no administrado como sea posible), el único problema es que Jython está en 2,5 todavía, que es una mierda cuando estás acostumbrado a 2.6/2.7/3 :)

Cuestiones relacionadas