Quelle est la différence entre GTK et QT?

29

S'il vous plaît, restez avec moi car je suis un nouveau venu sur Linux. J'écris des programmes GUI dans REALbasic sur un Mac depuis plusieurs années. J'essaie d'apprendre Python et je veux écrire des applications GUI pour Linux (principalement Ubuntu et Mint car ce sont les distributions auxquelles j'ai accès et elles semblent être les plus populaires). J'ai essentiellement trois questions:

  1. Existe-t-il des différences significatives entre GTK et QT
  2. J'ai joué avec quicklyet Gladesur Ubuntu mais je comprends qu'ils sont basés sur GTK 2 et c'est maintenant obsolète. Est-ce exact?
  3. Existe-t-il des éditeurs tout-en-un qui me permettent de concevoir une interface graphique et d'y ajouter du code Python? (par exemple, ajoutez un bouton à une fenêtre de l'éditeur, double-cliquez sur le bouton puis ajoutez le code Python à exécuter lorsque le bouton est enfoncé)

Désolé si ce sont des questions vraiment stupides, mais je veux commencer à apprendre les «bons» outils dès le départ.

Nootrino
la source
2
Je n'ai pas le temps pour le moment de répondre à vos questions, mais je peux clarifier quelque chose. Glade était à la fois une bibliothèque, un format pour un fichier de définition d'interface utilisateur et une application pour créer ces fichiers .glade. Maintenant, nous utilisons GtkBuilder pour ce que faisait le format Glade, et qui est intégré à GTK. Glade, l'application demeure un excellent outil pour créer des fichiers .ui pour GtkBuilder (ou simplement pour tester différentes dispositions), et Glade 3.x fait certainement Gtk3 - bien que tout ne soit pas là pour le moment.
Dylan McCall
C'est très utile. Donc, si je décide d'utiliser GTK comme boîte à outils, j'utiliserais Glade pour concevoir la mise en page et un autre outil pour lier mon code Pyhton et la conception de l'interface utilisateur - correct?
Nootrino
Oui, et cet outil fait partie de GTK, il est donc documenté ici: developer.gnome.org/gtk3/3.1/GtkBuilder.html Je vous relie à la documentation C car elle est assez détaillée et lorsque vous utilisez PyGObject la seule vraie différence sera la syntaxe. En Python, les noms et les éléments ressembleront à ceci: valadoc.org/gtk+-3.0/Gtk.Builder.html
Dylan McCall

Réponses:

12

J'essaierai de répondre à vos questions, sans aller dans des directions folles.

  1. Ils sont très différents, même s'ils sont tous les deux des widgets. GTK + normal est basé sur C et QT sur C ++. Bien que des liaisons existent pour presque tous les langages de programmation.

  2. Vous avez assez raison sur GTK2, bien qu'il y ait tellement d'applications GTK2. Je m'attends à ce que GTK2 soit utilisé pendant un certain temps, tout comme GTK1. Lorsque la poussée arrive, GTK2 est obsolète, et si vous commencez à nouveau, allez GTK3.

  3. Remeber GTK et QT ne sont que des kits d'outils de widget. Par exemple ... les applications Gnome, utilisez GTK et aussi les Gnome-Libs. Si vous le souhaitez, jetez un œil à vala. Il est considéré comme simple, le vala compile de source à source directement en C et dispose de liaisons complètes pour de nombreux langages de programmation. Vous voudrez peut-être aussi regarder Anjuta, assurez-vous simplement d'avoir les nouvelles versions de gtk3. Apparemment, PyGTK détroit ne prend en charge que GTK2, le dernier que j'ai vérifié. Si vous cherchez à éviter toutes les bibliothèques Linux DE, je vous suggère de regarder QT. Plain QT est différent des applications KDE, qui incluent les bibliothèques KDE. QT est considéré comme très multiplateforme, ce qui est cool si vous voulez compiler pour non * nix. Si vous voulez commencer avec QT + Python, regardez PySide (LGPL) ou PyQT (GPL). QT a de bons constructeurs de GUI comme qt creator et qt-designer.

JM Becker
la source
Merci pour cela. Anjuta ressemble à peu près à ce que j'ai recherché. Je vais jouer un peu avec. Si ce n'est pas bien, je vais regarder QT. Il me semble que GTK et QT atteignent le même résultat final - c'est juste une question de préférence, je suppose.
Nootrino
Qt est bien plus qu'une simple boîte à outils de widget. Il s'agit d'un framework complet, reproduisant de gros morceaux de la STL et de Boost.
scottl
@scottl, je n'essayais pas de limiter QT. Bien que QT soit plus capable que les widgets, c'est dans ce contexte qu'il est devenu une partie de la solution potentielle.
JM Becker
@Nootrino: vous devez vous rappeler dans le monde FLOSS, il y a souvent plus d'une solution établie. La raison pour laquelle beaucoup de gens ont choisi, l'un ou l'autre, est basée sur leur position C vs, C ++. Bien sûr, la licence a joué un rôle plus important dans le passé. Quels que soient les autres frameworks dans de nombreux langages, vous êtes généralement plus d'accord avec une seule méthode.
JM Becker,
@Nootrino: Je suis content d'avoir pu réellement aider!
JM Becker
5

GTK et Qt sont des kits d'outils d'interface utilisateur multiplateforme open source et des cadres de développement. Ce sont les deux frameworks les plus populaires utilisés pour Linux car ils sont open-source et offrent aux développeurs une boîte à outils puissante pour concevoir des interfaces utilisateur graphiques. GTK est utilisé comme boîte à outils standard pour les environnements de bureau GNOME, LXDE et Xfce tandis que Qt est utilisé pour KDE.

Si vous codez en C, optez évidemment pour GTK +

Si vous codez en C ++, optez pour Qt, sinon vous aurez besoin de Gtkmm (un wrapper C ++ sur GTK +)

Si vous codez en Python, GTK + et Qt ont tous deux des liaisons pour le langage: voir PyGtk, PyQt et PySide (celui lancé par Nokia eux-mêmes).

One Zero
la source
Si vous utilisez Python, PyGTK est obsolète. Pour les nouveaux projets, vous serez beaucoup mieux en utilisant PyGObject (python-gobject dans le référentiel d'Ubuntu): live.gnome.org/PyGObject PyGObject vous permet de vous connecter à n'importe quelle bibliothèque construite sur GLib (comme GTK) via Python, sans couches supplémentaires. Vous obtenez quelque chose de très similaire à PyGTK, mais cela se passe très différemment. Et, bien sûr, PyGObject est le seul moyen de parler à GTK3 via Python.
Dylan McCall
-2

Qt est principalement utilisé dans KDE et GTK + dans GNOME. Donc, si vous souhaitez développer pour GNOME, pensez à GTK + car les dépendances nécessaires pour les bibliothèques GTK + devraient déjà être installées sur un système GNOME; l'utilisateur final n'aura pas besoin de les installer. Le développement de GTK + bénéficie également d'un outil appelé Glade Interface Designer ; si vous le souhaitez, vous pouvez l'utiliser pour créer vos interfaces utilisateur.

kosaidpo
la source
5
QT est une boîte à outils multiplateforme qui n'est pas seulement utilisée dans KDE, tout comme GTK. ET veuillez ne pas écrire "txt lik dis" ...
Uri Herrera