Was ist der Unterschied zwischen GTK und QT?

29

Bitte nehmen Sie mit, ich bin ein Linux-Neuling. Ich schreibe seit mehreren Jahren GUI-Programme in REALbasic auf einem Mac. Ich versuche Python zu lernen und ich möchte GUI-Apps für Linux schreiben (hauptsächlich Ubuntu und Mint, da sie die Distributionen sind, auf die ich Zugriff habe, und sie scheinen die beliebtesten zu sein). Ich habe grundsätzlich drei Fragen:

  1. Gibt es signifikante Unterschiede zwischen GTK und QT?
  2. Ich habe mit quicklyund Gladeauf Ubuntu gespielt, aber ich verstehe, dass sie auf GTK 2 basieren und dies nun veraltet ist. Ist das korrekt?
  3. Gibt es All-in-One-Editoren, mit denen ich eine GUI entwerfen und dann Python-Code hinzufügen kann? (Fügen Sie beispielsweise einem Fenster im Editor eine Schaltfläche hinzu, doppelklicken Sie auf die Schaltfläche und fügen Sie dann den Python-Code hinzu, der ausgeführt werden soll, wenn die Schaltfläche gedrückt wird.)

Es tut mir leid, wenn dies wirklich blöde Fragen sind, aber ich möchte von Anfang an die richtigen Tools erlernen.

Nootrino
quelle
2
Ich habe momentan keine Zeit, um Ihre Fragen zu beantworten, aber ich kann etwas klarstellen. Glade war früher eine Bibliothek, ein Format für eine UI-Definitionsdatei und eine Anwendung zum Erstellen dieser .glade-Dateien. Jetzt verwenden wir GtkBuilder für die Aufgaben des Glade-Formats, das in GTK integriert ist. Glade ist ein großartiges Tool, um .ui-Dateien für GtkBuilder zu erstellen (oder einfach um verschiedene Layouts zu testen), und Glade 3.x unterstützt Gtk3 - obwohl derzeit noch nicht alles vorhanden ist.
Dylan McCall
Das ist sehr hilfreich. Wenn ich mich also für GTK als Toolkit entscheide, benutze ich Glade, um das Layout zu entwerfen, und ein anderes Tool, um meinen Pyhton-Code und das Design der Benutzeroberfläche zu verknüpfen - richtig?
Nootrino
Ja, und dieses Tool ist Teil von GTK. Es ist also hier dokumentiert: developer.gnome.org/gtk3/3.1/GtkBuilder.html Ich verlinke Sie mit der C-Dokumentation, weil sie ziemlich detailliert ist und wenn Sie PyGObject verwenden Der einzige wirkliche Unterschied wird die Syntax sein. In Python sehen die Namen und Sachen ungefähr
Dylan McCall

Antworten:

12

Ich werde versuchen, Ihre Fragen zu beantworten, ohne in verrückte Richtungen zu gehen.

  1. Sie unterscheiden sich erheblich, obwohl sie beide Widget-Bibliotheken sind. Reguläres GTK + basiert auf C und QT auf C ++. Obwohl Bindungen für fast alle Programmiersprachen existieren.

  2. Sie sind ziemlich korrekt in Bezug auf GTK2, obwohl es so viele GTK2-Anwendungen gibt. Ich gehe davon aus, dass GTK2 eine Weile in Gebrauch sein wird, genau wie GTK1. Wenn Druck aufkommt, ist GTK2 veraltet, und wenn Sie neu anfangen, gehen Sie zu GTK3.

  3. Remeber GTK und QT sind nur Widget-Toolkits. Zum Beispiel ... Gnome-Anwendungen, benutze GTK und auch die Gnome-Libs. Wenn du das willst, schau dir vala an. Es wird als einfach angesehen, das vala kompiliert Source-to-Source direkt in C und verfügt über vollständige Bindungen für viele Programmiersprachen. Vielleicht möchten Sie sich auch Anjuta ansehen, stellen Sie jedoch sicher, dass Sie die neuen gtk3-Versionen haben. Anscheinend unterstützt PyGTK nur GTK2, das habe ich zuletzt überprüft. Wenn Sie alle Linux-DE-Bibliotheken vermeiden möchten, würde ich empfehlen, sich QT anzuschauen. Plain QT unterscheidet sich von KDE-Anwendungen, die KDE-Bibliotheken enthalten. QT wird als sehr plattformübergreifend angesehen, was cool ist, wenn Sie für Nicht-Nix kompilieren möchten. Wenn Sie mit QT + Python beginnen möchten, schauen Sie sich PySide (LGPL) oder PyQT (GPL) an. QT hat einige gute GUI-Builder wie qt creator und qt-designer.

JM Becker
quelle
Danke dafür. Anjuta sieht so ziemlich so aus, wie ich es gesucht habe. Ich werde ein bisschen damit herumspielen. Wenn es nicht stimmt, schaue ich mir QT an. Es fällt mir auf, dass sowohl GTK als auch QT das gleiche Endergebnis erzielen - ich denke, es ist nur eine Frage der Präferenz.
Nootrino
Qt ist viel mehr als nur ein Widget-Toolkit. Es ist ein ganzes Framework, das große Teile von STL und Boost repliziert.
Scottl
@ scottl, ich habe nicht versucht, QT einzuschränken. Während QT mehr kann als nur Widgets, wurde es in diesem Zusammenhang Teil der möglichen Lösung.
JM Becker
@Nootrino: Man muss bedenken, dass es in der FLOSS-Welt oft mehr als eine etablierte Lösung gibt. Der Grund, den viele Menschen gewählt haben, basiert auf ihrem C-gegen-C ++ -Stand. Natürlich spielte die Lizenz in der Vergangenheit eine größere Rolle. Unabhängig davon, ob andere Frameworks in vielen Sprachen vorhanden sind, stimmen Sie in der Regel mehr einer Methode zu.
JM Becker
@Nootrino: Ich bin froh, dass ich helfen konnte!
JM Becker
5

GTK und Qt sind plattformübergreifende Open-Source-Toolkits für Benutzeroberflächen und Entwicklungsframeworks. Dies sind die beiden beliebtesten Frameworks für Linux, da sie Open Source sind und Entwicklern ein leistungsstarkes Toolkit zum Entwerfen grafischer Benutzeroberflächen bieten. GTK wird als Standard-Toolkit für die GNOME-, LXDE- und Xfce-Desktop-Umgebungen verwendet, während Qt für KDE verwendet wird.

Wenn Sie in C codieren, entscheiden Sie sich offensichtlich für GTK +

Wenn Sie in C ++ codieren, wählen Sie Qt, andernfalls benötigen Sie Gtkmm (einen C ++ - Wrapper über GTK +).

Wenn Sie in Python codieren, verfügen sowohl GTK + als auch Qt über Bindungen für die Sprache: Siehe PyGtk, PyQt und PySide (die von Nokia selbst gestartete).

Eine Null
quelle
Wenn Sie Python verwenden, ist PyGTK veraltet. Für neue Projekte ist PyGObject (Python-Gobject im Ubuntu-Repository) viel besser geeignet: Mit live.gnome.org/PyGObject PyGObject können Sie über Python eine Verbindung zu jeder auf GLib basierenden Bibliothek (wie GTK) herstellen, ohne zusätzliche Ebenen. Man bekommt so etwas wie PyGTK, aber es geht ganz anders. Und PyGObject ist natürlich die einzige Möglichkeit, über Python mit GTK3 zu kommunizieren.
Dylan McCall
-2

Qt wird hauptsächlich in KDE und GTK + in GNOME verwendet. Wenn Sie also für GNOME entwickeln möchten, ziehen Sie GTK + in Betracht, da die erforderlichen Abhängigkeiten für GTK + -Bibliotheken bereits auf einem GNOME-System installiert sein sollten. Der Endbenutzer muss sie nicht installieren. Die GTK + -Entwicklung profitiert auch von einem Tool namens Glade Interface Designer . Wenn Sie möchten, können Sie damit Ihre Benutzeroberflächen erstellen.

kosaidpo
quelle
5
QT ist ein plattformübergreifendes Toolkit, das nicht nur in KDE verwendet wird, sondern auch in GTK. UND bitte nicht "txt lik dis" schreiben ...
Uri Herrera