Qual è la differenza tra GTK e QT?


29

Per favore, abbi pazienza perché sono un nuovo arrivato in Linux. Ho scritto programmi GUI in REALbasic su un Mac per diversi anni. Sto cercando di imparare Python e voglio scrivere app GUI per Linux (principalmente Ubuntu e Mint poiché sono le distro a cui ho accesso e sembrano essere le più popolari). Fondamentalmente ho tre domande:

  1. Ci sono differenze significative tra GTK e QT
  2. Ho giocato con quicklye Gladesu Ubuntu ma capisco che sono basati su GTK 2 e questo è ormai obsoleto. È corretto?
  3. Esistono editor all-in-one che mi consentono di progettare una GUI e quindi aggiungere il codice Python ad essa? (ad esempio, aggiungi un pulsante a una finestra nell'editor, fai doppio clic sul pulsante e quindi aggiungi il codice Python che deve essere eseguito quando viene premuto il pulsante)

Scusate se sono domande davvero stupide, ma voglio iniziare a imparare gli strumenti "giusti" dall'inizio.


2
In questo momento non ho tempo per rispondere alle tue domande, ma posso chiarire qualcosa. Glade era sia una libreria, un formato per un file di definizione dell'interfaccia utente e un'applicazione per creare quei file .glade. Ora usiamo GtkBuilder per quello che faceva il formato Glade e che è integrato in GTK. Glade l'applicazione continua a essere un ottimo strumento per creare file .ui per GtkBuilder (o semplicemente per testare diversi layout), e Glade 3.x fa sicuramente Gtk3 - anche se al momento non tutto è lì.
Dylan McCall,

Questo è molto utile. Quindi, se decido di usare GTK come mio kit di strumenti, allora userei Glade per progettare il layout e un altro strumento per collegare il mio codice Pyhton e il design dell'interfaccia utente - giusto?
Nootrino,

Sì, e quello strumento fa parte di GTK, quindi è documentato qui: developer.gnome.org/gtk3/3.1/GtkBuilder.html Ti sto collegando alla documentazione C perché è piuttosto dettagliata e quando stai usando PyGObject l'unica vera differenza sarà la sintassi. In Python, i nomi e le cose appariranno in questo modo: valadoc.org/gtk+-3.0/Gtk.Builder.html
Dylan McCall il

Risposte:


12

Proverò a rispondere alle tue domande, senza andare in direzioni folli.

  1. Sono significativamente differenti, anche se sono entrambi librerie di widget. GTK + regolare si basa su C e QT su C ++. Sebbene esistano collegamenti per quasi tutti i linguaggi di programmazione.

  2. Hai ragione su GTK2, anche se ci sono così tante applicazioni GTK2. Mi aspetto che GTK2 rimanga in uso per un po ', proprio come lo era GTK1. Quando arriva la spinta, GTK2 è deprecato, e se stai ricominciando vai GTK3.

  3. Remeber GTK e QT sono solo toolkit di widget. Ad esempio ... applicazioni Gnome, usa GTK e anche Gnome-Libs. Se lo desideri, dai un'occhiata a vala. È considerato semplice, la vala compila da sorgente a sorgente direttamente in C e ha collegamenti completi per molti linguaggi di programmazione. Potresti anche voler guardare Anjuta, assicurati di avere le nuove versioni di gtk3. PyGTK apparentemente stretto supporta solo GTK2, l'ultimo che ho controllato. Se stai cercando di evitare tutte le librerie Linux DE, ti suggerirei di guardare QT. Il semplice QT è diverso dalle applicazioni KDE, che includono librerie KDE. QT è considerato molto multipiattaforma, il che è interessante se si desidera compilare per non * nix. Se vuoi iniziare con QT + Python, guarda PySide (LGPL) o PyQT (GPL). QT ha alcuni buoni costruttori di GUI come qt creator e qt-designer.


Grazie per questo. Anjuta sembra praticamente ciò che ho cercato. Ci giocherò un po '. Se non è giusto, allora guarderò QT. Mi sembra che sia GTK che QT ottengano lo stesso risultato finale - credo sia solo una questione di preferenze.
Nootrino,

Qt è molto più di un semplice toolkit di widget. È un intero framework, che replica grandi blocchi di STL e Boost.
Scott

@scottl, non stavo cercando di limitare QT. Mentre QT è più capace dei semplici widget, è in quel contesto che è diventato parte della potenziale soluzione.
JM Becker,

@Nootrino: devi ricordare nel mondo FLOSS, spesso esiste più di una soluzione consolidata. Il motivo per cui molte persone hanno scelto, l'una o l'altra, si basa sulla loro posizione C vs, C ++. Naturalmente, la licenza ha giocato un ruolo più importante in passato. Indipendentemente dal fatto che esistano altri framework in molte lingue, di solito si accetta di più con un metodo.
JM Becker,

@Nootrino: sono contento di essere stato in grado di aiutare davvero!
JM Becker,

5

GTK e Qt sono toolkit di interfacce utente multipiattaforma open source e framework di sviluppo. Questi sono i due framework più popolari in uso per Linux perché sono open source e offrono agli sviluppatori un potente toolkit per la progettazione di interfacce utente grafiche. GTK è usato come toolkit standard per gli ambienti desktop GNOME, LXDE e Xfce mentre Qt è usato per KDE.

Se scrivi il codice in C, ovviamente scegli GTK +

Se codifichi in C ++, scegli Qt, altrimenti dovrai utilizzare Gtkmm (un wrapper C ++ su GTK +)

Se si codifica in Python, sia GTK + che Qt hanno collegamenti per la lingua: vedere PyGtk, PyQt e PySide (quello lanciato dallo stesso Nokia).


Se stai usando Python, PyGTK è obsoleto. Per i nuovi progetti starai molto meglio usando PyGObject (python-gobject nel repository di Ubuntu): live.gnome.org/PyGObject PyGObject ti consente di collegarti a qualsiasi libreria costruita su GLib (come GTK) tramite Python, senza ulteriori livelli. Ottieni qualcosa di molto simile a PyGTK, ma lo fa in modo abbastanza diverso. E, naturalmente, PyGObject è l'unico modo per parlare con GTK3 tramite Python.
Dylan McCall,

-2

Qt è utilizzato principalmente in KDE e GTK + in GNOME. Quindi, se si desidera sviluppare per GNOME, considerare GTK + poiché le dipendenze necessarie per le librerie GTK + dovrebbero essere già installate su un sistema GNOME; l'utente finale non dovrà installarli. Lo sviluppo di GTK + beneficia anche di uno strumento chiamato Glade Interface Designer ; se lo desideri, puoi utilizzarlo per creare le tue interfacce utente.


5
QT è un toolkit multipiattaforma che non viene utilizzato solo in KDE, così come GTK. E per favore astenersi dal scrivere "txt lik dis" ...
Uri Herrera il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.