2009-05-08 16 views
13

Estoy pensando en multiplataforma con buenos enlaces de lenguaje de programación (Java, Ruby y Python). ¿Cuál sería la curva de aprendizaje más "plana" pero con suficientes poderes para realizar la mayoría de las funciones estándar de GUI? ¿Qué quisieran chicos/chicas? FOX, wx, Tk o Qt?¿Práctico juego de herramientas GUI?

Respuesta

20

Me gustaría ir con Qt. Funciona en todas las plataformas principales, y se mejora continuamente. También puede comenzar realmente rápido. Hay enlaces para Java, Ruby y Python.
Además, es gratis si está escribiendo programas de código abierto.

+0

Además, es gratis si está escribiendo aplicaciones de código abierto (liberadas como GPL). – Matt

+5

es LGPL, por lo que es gratis independientemente de la licencia que utilice para su aplicación. – gbjbaanb

+0

Qt4 tiene la mejor compatibilidad con BiDI si necesita admitir scripts RTL. El más flexible, y en mi humilde opinión, el más rico. – elcuco

7

Honestamente, he creado cosas con Tk, wx y Qt, y los odio a todos por igual. El editor visual de Qt es el menos desagradable de los tres, creo.

+0

La mayoría de los programadores de Tk profesionales que conozco están de acuerdo en que Tk es tan fácil de usar que un editor visual simplemente se interpone en el camino. Si eso dice algo acerca de la relativa facilidad de uso de Qt o wx en comparación con Tk, no lo sé. –

+1

Bueno, todavía me gustan las maldiciones de todos modos. –

+0

@Charlie Martin Dado su historial, sé por qué :-) – lothar

1

No he trabajado con Qt, así que no puedo juzgarlo, pero he trabajado con wx y es bastante fácil de usar y todavía bastante delgado. Además, wxWidgets le ofrece widgets nativos en cada plataforma, lo que es una gran ventaja (especialmente para Mac). Mientras que los otros emulan la apariencia de la plataforma nativa, wxWidgets usa directamente los widgets nativos, lo que es más rápido para muchas situaciones.

+1

No del todo cierto: Tk utiliza widgets nativos en plataformas que tienen widgets nativos (léase: Windows y Mac). No hay emulación, obtienes el trato real. –

2

Si está pensando en Java, SWT es un excelente conjunto de herramientas GUI multiplataforma.

4

WX todo el camino! No soy un experto en GUI, diseñador o incluso un "tipo GUI", pero recientemente necesitaba escribir un front-end para una herramienta de configuración de producto (en realidad es una colección de herramientas, pero queríamos una sola interfaz para acceder y ejecutar el centro comercial).
Todas las herramientas están escritas en Python, así que, naturalmente, recurrí a Python para obtener la interfaz de usuario.
Me decidí por wxPython ... una "importación wx" y algunos tutoriales más tarde, estaba sacando marcos, cuadernos y paneles de botones como si supiera lo que estaba haciendo.
Encontré muchos ejemplos para ayudarme cuando me quedé atascado y los documentos de wxPython fueron muy útiles, aunque solo son documentos de C++, todavía eran bastante intuitivos.
Una búsqueda rápida en la web generará montones de tutoriales en wxPython para que pueda comenzar.

He escrito y refabricado la interfaz de usuario un par de veces, pero tuve un prototipo limpio y funcional en < 1 día. La herramienta era multiplataforma y todas las ventanas y marcos coincidían con el sistema de ventanas nativo (WinXP, Win2K3, Gnome, etc.) - Definitivamente me impresionó. Si alguna vez tengo que escribir UI en cualquier otro idioma, ciertamente buscaré una implementación de wx.

+1

No he probado los otros, pero voy a estar muy de acuerdo con Joel. Además, la documentación con wx es realmente buena. Mire mi manejo: comencé a trabajar seriamente con Python en octubre, tenía experiencia limitada en programación fuera de SAS y en diciembre tenía una aplicación con una GUI que funcionaba bien y era estable. – PyNEwbie

3

Tk sigue siendo una solución muy viable. La curva de aprendizaje depende mucho de ti. Mucha gente, como yo, puede o ha aprendido todos los fundamentos de Tcl y Tk en aproximadamente un día. Hay quienes aún luchan contra la sintaxis después de años de uso. Todo depende de lo bueno que seas en "desaprender" cosas que has aprendido con los lenguajes tradicionales como C y Java. Si tiene algún ceceo en el fondo, probablemente pueda aprender Tcl en la mañana.

Otro beneficio de Tk es el hecho de que funciona con Tcl, Perl, Python y Ruby (y otros) por lo que no se queda atrapado con un idioma en particular. Sin embargo, no hay un puerto directo de Tk a Java. Aprende en un idioma y tu conocimiento se transferirá con bastante facilidad a otros idiomas. Tk sale de la caja con Tcl y Python, por lo que para esos idiomas no hay nada más que instalar.

voy a decir, sin embargo, después de haber escrito varios cientos de líneas de código/Tkinter Python las últimas semanas me gusta mucho, mucho prefiero codificación en Tcl cuando se trata de interfaces gráficas de usuario, pero eso es más de una cosa personal que otra cosa .

Para más información sobre Tk con Tcl, Ruby y Perl ver http://www.tkdocs.com

+0

wx se ve mejor que Tk por mi opinión, por ejemplo, Mac OS X, ya que Tk se ejecuta en X11. Para Ruby, se instaló a través de rubygems y es fácil de usar, pero fue aún más fácil comenzar con Tk, ya que se incorporó al Mac OS X. Probablemente apunte a wx para los proyectos de Python o Ruby. – davidhalldor

+1

Tk tiene un puerto de carbono y el cacao está en proceso, lo que significa que no está atascado con X11 en el mac a menos que lo desee. Visite el sitio web tkdocs.com para ver ejemplos de widgets nativos en mac y windows. Y Tcl/Tk viene con OSX por lo que no necesita instalar nada. –

+0

Debe haber algún tipo de insignia especial para obtener una respuesta aceptada sin votos ascendentes netos, como esta muestra en este momento. –

1

Si Java es su idioma preferido, considere Groovy. Es un lenguaje dinámico muy agradable que se sienta encima de Java, y tiene algunas características realmente agradables (SwingBuilder) con respecto a escribir GUI. Si no fuera por el hecho de que soy muy productivo en Tcl/tk, creo que Groovy sería mi segunda opción personal, aunque no soy un gran admirador de Java o Swing per se. Groovy busca quitarle el tedio a ambos.

Para obtener más información, vea GUI Programming with Groovy.

+0

Encuentro a Groovy realmente interesante y definitivamente comprobaré hacer las GUI de Swing. Muchos grandes IDE tienen buenas herramientas/complementos Swing como IntelliJ y Eclipse. – davidhalldor

1

Recomiendo Gtk. Es un kit de herramientas agradable, multiplataforma y atractivo. Está diseñado con enlaces de lenguaje en mente y permite crear enlaces de lenguaje agradables (pygtk, ruby ​​/ gtk2, java-gnome, gtk # y más). Gtk + es bastante fácil de aprender.

0

Solo quiero mencionar que Qt es mucho más que una simple GUI toolkit. Obtienes mucho más con eso, todo bien integrado en el marco, que valdría la pena usarlo si estás considerando el desarrollo de plataformas cruzadas. El único problema es que si desea usarlo a través de Python vinculante con Python, tendrá que pagar una licencia comercial PyQt (costosa) o su código GPL.

+0

puede definir "más". ¿Qué "más" obtienes además del kit de herramientas GUI? –

0

Gtk es un gran conjunto de herramientas multiplataforma. Además, los enlaces para ruby ​​están disponibles en rubygem, por lo que es muy fácil de instalar. Gtk se usa para muchos programas como Nautilus, y tiene muchas, muchas posibilidades. La compensación es que Gtk hace tanto, que es un poco complejo.

Cuando escribo una interfaz gráfica de usuario, me niego a codificar manualmente cada widget, insisto en un entorno gráfico para construir mis formularios. Creo que eso significa usar Glade o QT Creator. Intenté QT Creator, y descubrí que era muy lento, que no podía usarlo, así que construyo mis formularios con glade.

Cuando crea sus formularios en glade, los atributos del formulario se guardan en un archivo XML que puede leer su idioma. Muchos idiomas tienen módulos "Gtk :: Builder" que leen los archivos XML y luego usan GTK para mostrar los formularios en pantalla en tiempo de ejecución. Por lo tanto, si usa glade, puede usar el idioma de su elección (C java, ruby, python) y no necesita "codificar manualmente" todos sus formularios.

Dada la elección de idiomas, elegiría ruby.

Para ser justos, no he probado wxRuby o Tk. Pero sé que no quiero codificar manualmente las GUI. Puedes ver mi trabajo sobre esto en visualruby.net. He usado ruby ​​con glade para crear muchas GUI.

Cuestiones relacionadas