¿Cuál es la diferencia entre GTK y QT?

29

Por favor, tengan paciencia conmigo ya que soy un recién llegado a Linux. He estado escribiendo programas GUI en REALbasic en una Mac durante varios años. Estoy tratando de aprender Python y quiero escribir aplicaciones GUI para Linux (principalmente Ubuntu y Mint, ya que son las distribuciones a las que tengo acceso y parecen ser las más populares). Básicamente tengo tres preguntas:

  1. ¿Hay alguna diferencia significativa entre GTK y QT?
  2. He jugado con quicklyy Gladeen Ubuntu, pero entiendo que están basados ​​en GTK 2 y ahora está obsoleto. ¿Es eso correcto?
  3. ¿Hay editores todo en uno que me permitan diseñar una GUI y luego agregarle código Python? (por ejemplo, agregue un botón a una ventana en el editor, haga doble clic en el botón y luego agregue el código de Python que se ejecutará cuando se presione el botón)

Lo siento si estas son preguntas realmente tontas, pero quiero comenzar a aprender las herramientas "correctas" desde el principio.

Nootrino
fuente
2
No tengo tiempo en este momento para responder sus preguntas, pero puedo aclarar algo. Glade solía ser una biblioteca, un formato para un archivo de definición de IU y una aplicación para crear esos archivos .glade. Ahora usamos GtkBuilder para lo que solía hacer el formato Glade, y eso está integrado en GTK. Glade la aplicación sigue siendo una gran herramienta para crear archivos .ui para GtkBuilder (o simplemente para probar diferentes diseños), y Glade 3.x ciertamente hace Gtk3, aunque no todo está en este momento.
Dylan McCall
Eso es muy útil. Entonces, si decido usar GTK como mi kit de herramientas, usaría Glade para diseñar el diseño y otra herramienta para vincular mi código Pyhton y el diseño de la interfaz de usuario, ¿correcto?
Nootrino
Sí, y esa herramienta es parte de GTK, por lo que está documentada aquí: developer.gnome.org/gtk3/3.1/GtkBuilder.html Te estoy vinculando a la documentación de C porque es bastante detallada, y cuando estás usando PyGObject La única diferencia real será la sintaxis. En Python, los nombres y otras cosas se verán así: valadoc.org/gtk+-3.0/Gtk.Builder.html
Dylan McCall

Respuestas:

12

Trataré de responder a sus preguntas, sin ir en direcciones locas.

  1. Son significativamente diferentes, a pesar de que ambos son libs de widgets. Regular GTK + se basa en C y QT en C ++. Aunque existen enlaces para casi todos los lenguajes de programación.

  2. Tienes bastante razón sobre GTK2, aunque hay tantas aplicaciones GTK2. Espero que GTK2 esté en uso por un tiempo, al igual que GTK1. Cuando se trata de empujar, GTK2 está en desuso, y si está comenzando de nuevo, vaya a GTK3.

  3. Remeber GTK y QT son solo kits de herramientas de widgets. Por ejemplo ... Aplicaciones Gnome, use GTK y también Gnome-Libs. Si quieres eso, mira vala. Se considera simple, el vala compila fuente a fuente directamente a C y tiene enlaces completos para muchos lenguajes de programación. Es posible que también desee ver Anjuta, solo asegúrese de tener las nuevas versiones de gtk3. Aparentemente, PyGTK estrecho solo es compatible con GTK2, la última vez que revisé. Si está buscando evitar todas las librerías de Linux DE, sugeriría mirar QT. Plain QT es diferente de las aplicaciones de KDE, que incluyen librerías de KDE. QT se considera muy multiplataforma, lo cual es genial si desea compilar para non * nix. Si desea comenzar con QT + Python, mire PySide (LGPL) o PyQT (GPL). QT tiene algunos buenos constructores de GUI como qt creator y qt-designer.

JM Becker
fuente
Gracias por esto. Anjuta se parece bastante a lo que he estado buscando. Voy a jugar un poco con eso. Si no está bien, miraré QT. Me sorprende que tanto GTK como QT logren el mismo resultado final, supongo que es solo una cuestión de preferencia.
Nootrino
Qt es mucho más que un simple kit de herramientas de widgets. Es un marco completo, que replica grandes fragmentos de STL y Boost.
scottl
@ scottl, no estaba tratando de limitar QT. Si bien QT es más capaz que solo widgets, en ese contexto se convirtió en parte de la solución potencial.
JM Becker
@Nootrino: hay que recordar que en el mundo de FLOSS, a menudo hay más de una solución establecida. La razón por la que muchas personas han elegido, una u otra, se basa en su posición C vs, C ++. Por supuesto, la licencia jugó un papel más importante en el pasado. Independientemente de que existan otros marcos en muchos idiomas, generalmente está más de acuerdo con un método.
JM Becker
@Nootrino: ¡Me alegro de haber podido ayudar!
JM Becker
5

GTK y Qt son kits de herramientas y marcos de desarrollo de interfaz de usuario multiplataforma de código abierto. Estos son los dos marcos más populares en uso para Linux porque son de código abierto y brindan a los desarrolladores un poderoso kit de herramientas para diseñar interfaces gráficas de usuario. GTK se usa como el kit de herramientas estándar para los entornos de escritorio GNOME, LXDE y Xfce, mientras que Qt se usa para KDE.

Si codifica en C, entonces obviamente vaya a GTK +

Si codifica en C ++, vaya a Qt, de lo contrario necesitará Gtkmm (un contenedor de C ++ sobre GTK +)

Si codifica en Python, tanto GTK + como Qt tienen enlaces para el idioma: vea PyGtk, PyQt y PySide (el lanzado por los propios Nokia).

Un cero
fuente
Si está utilizando Python, PyGTK está en desuso. Para nuevos proyectos, será mucho mejor usar PyGObject (python-gobject en el repositorio de Ubuntu): live.gnome.org/PyGObject PyGObject le permite conectarse a cualquier biblioteca construida en GLib (como GTK) a través de Python, sin capas adicionales. Obtiene algo muy parecido a PyGTK, pero lo hace de manera bastante diferente. Y, por supuesto, PyGObject es la única forma de hablar con GTK3 a través de Python.
Dylan McCall
-2

Qt se usa principalmente en KDE y GTK + en GNOME. Entonces, si desea desarrollar para GNOME, considere GTK + ya que las dependencias necesarias para las bibliotecas GTK + ya deberían estar instaladas en un sistema GNOME; el usuario final no necesitará instalarlos. El desarrollo de GTK + también se beneficia con una herramienta llamada Glade Interface Designer ; si lo desea, puede usar eso para crear sus interfaces de usuario.

kosaidpo
fuente
55
QT es un juego de herramientas multiplataforma que no solo se usa en KDE, sino también GTK. Y por favor, abstenerse de escribir "txt lik dis" ...
Uri Herrera