Jaka jest różnica między GTK a QT?

29

Proszę o wyrozumiałość, ponieważ jestem nowicjuszem w Linuksie. Od kilku lat piszę programy GUI w REALbasic na komputerze Mac. Próbuję nauczyć się języka Python i chcę pisać aplikacje GUI dla systemu Linux (przede wszystkim Ubuntu i Mint, ponieważ są to dystrybucje, do których mam dostęp i wydają się być najbardziej popularne). Zasadniczo mam trzy pytania:

  1. Czy są jakieś znaczące różnice między GTK a QT
  2. Grałem na Ubuntu quicklyi Gladena nim, ale rozumiem, że są one oparte na GTK 2 i to jest już przestarzałe. Czy to jest poprawne?
  3. Czy są jakieś edytory typu „wszystko w jednym”, które pozwalają mi zaprojektować GUI, a następnie dodać do niego kod Python? (na przykład dodaj przycisk do okna w edytorze, kliknij dwukrotnie przycisk, a następnie dodaj kod Python, który ma zostać wykonany po naciśnięciu przycisku)

Przepraszam, jeśli to naprawdę głupie pytania, ale chcę zacząć uczyć się „właściwych” narzędzi od samego początku.

Nootrino
źródło
2
Nie mam teraz czasu, aby odpowiedzieć na twoje pytania, ale mogę coś wyjaśnić. Glade był kiedyś biblioteką, formatem pliku definicji interfejsu użytkownika oraz aplikacją do tworzenia tych plików .glade. Teraz używamy GtkBuilder do tego, co robił format Glade, i to jest wbudowane w GTK. Glade aplikacja działa jako świetne narzędzie do tworzenia plików .ui dla GtkBuilder (lub po prostu do testowania różnych układów), a Glade 3.x z pewnością robi Gtk3 - choć nie wszystko jest w tej chwili dostępne.
Dylan McCall,
To bardzo pomocne. Więc jeśli zdecyduję się użyć GTK jako mojego zestawu narzędzi, użyłbym Glade do zaprojektowania układu i innego narzędzia do połączenia mojego kodu Pyhton i projektu interfejsu użytkownika - prawda?
Nootrino,
Tak, a to narzędzie jest częścią GTK, więc zostało to udokumentowane tutaj: developer.gnome.org/gtk3/3.1/GtkBuilder.html Łączę cię z dokumentacją C, ponieważ jest dość szczegółowa, a kiedy używasz PyGObject jedyną prawdziwą różnicą będzie składnia. W Pythonie nazwy i inne rzeczy będą wyglądać mniej więcej
Dylan McCall,

Odpowiedzi:

12

Spróbuję odpowiedzieć na twoje pytania, nie idąc w szaleńczym kierunku.

  1. Różnią się znacznie, mimo że oba są bibliotekami widgetów. Zwykłe GTK + oparte jest na C, a QT na C ++. Chociaż istnieją powiązania dla prawie wszystkich języków programowania.

  2. Masz całkowitą rację co do GTK2, chociaż jest tak wiele aplikacji GTK2. Spodziewam się, że GTK2 będzie przez jakiś czas używany, tak jak GTK1. Kiedy push przychodzi do gry, GTK2 jest przestarzałe, a jeśli dopiero zaczynasz, przejdź do GTK3.

  3. Remeber GTK i QT to tylko zestawy narzędzi do widgetów. Na przykład ... Aplikacje Gnome, użyj GTK, a także Gnome-Libs. Jeśli chcesz, spójrz na Vala. Jest to uważane za proste, vala kompiluje źródło-źródło bezpośrednio do C i ma pełne powiązania dla wielu języków programowania. Możesz także spojrzeć na Anjuta, po prostu upewnij się, że masz nowe wersje gtk3. Najwyraźniej cieśnina PyGTK obsługuje tylko GTK2, ostatnio sprawdziłem. Jeśli chcesz uniknąć wszystkich bibliotek Linux DE, proponuję spojrzeć na QT. Zwykły QT różni się od aplikacji KDE, które zawierają biblioteki KDE. QT jest uważany za bardzo wieloplatformowy, co jest fajne, jeśli chcesz skompilować dla innych niż * nix. Jeśli chcesz zacząć korzystać z QT + Python, spójrz na PySide (LGPL) lub PyQT (GPL). QT ma kilka dobrych konstruktorów GUI, takich jak qt creator i qt-designer.

JM Becker
źródło
Dzięki za to. Anjuta wygląda prawie tak jak ja. Będę się z tym trochę bawił. Jeśli to nie w porządku, przyjrzę się QT. Uderza mnie, że zarówno GTK, jak i QT osiągają ten sam efekt końcowy - to chyba kwestia preferencji.
Nootrino,
Qt to znacznie więcej niż tylko zestaw narzędzi do widgetów. Jest to cały framework, replikujący duże fragmenty STL i Boost.
scottl,
@ scottl, nie próbowałem ograniczać QT. Chociaż QT ma więcej możliwości niż widżety, w tym kontekście stał się częścią potencjalnego rozwiązania.
JM Becker,
@Nootrino: musisz pamiętać, że w świecie FLOSS często istnieje więcej niż jedno ustalone rozwiązanie. Powód, dla którego wiele osób wybrało jedną lub drugą, jest oparty na ich pozycji C vs, C ++. Oczywiście w przeszłości większą rolę odgrywała licencja. Bez względu na to, że istnieją inne frameworki w wielu językach, zwykle zgadzasz się więcej z jedną metodą.
JM Becker,
@Nootrino: Cieszę się, że naprawdę mogłem pomóc!
JM Becker,
5

GTK i Qt to wieloplatformowe zestawy narzędzi interfejsu użytkownika i platformy programistyczne. Są to dwa najpopularniejsze frameworki używane w systemie Linux, ponieważ są open source i dają programistom potężny zestaw narzędzi do projektowania graficznych interfejsów użytkownika. GTK jest używany jako standardowy zestaw narzędzi dla środowisk GNOME, LXDE i Xfce Desktop, natomiast Qt jest używany w KDE.

Jeśli kodujesz w C, to oczywiście wybierz GTK +

Jeśli piszesz w C ++, wybierz Qt, w przeciwnym razie będziesz potrzebował Gtkmm (otoki C ++ nad GTK +)

Jeśli kodujesz w Pythonie, zarówno GTK +, jak i Qt mają powiązania dla języka: zobacz PyGtk, PyQt i PySide (ten uruchomiony przez samą Nokię).

One Zero
źródło
Jeśli używasz języka Python, PyGTK jest przestarzałe. W przypadku nowych projektów znacznie lepiej będzie korzystać z PyGObject (python-gobject w repozytorium Ubuntu): live.gnome.org/PyGObject PyGObject pozwala połączyć się z dowolną biblioteką zbudowaną na GLib (np. GTK) przez Python, bez żadnych dodatkowych warstw. Otrzymujesz coś bardzo podobnego do PyGTK, ale wygląda to zupełnie inaczej. I oczywiście PyGObject jest jedynym sposobem na rozmowę z GTK3 przez Python.
Dylan McCall,
-2

Qt jest używany głównie w KDE, a GTK + w GNOME. Więc jeśli chcesz tworzyć dla GNOME, rozważ GTK +, ponieważ niezbędne zależności dla bibliotek GTK + powinny być już zainstalowane w systemie GNOME; użytkownik końcowy nie będzie musiał ich instalować. W rozwoju GTK + korzysta również narzędzie o nazwie Glade Interface Designer ; jeśli chcesz, możesz użyć tego do stworzenia interfejsów użytkownika.

Kosaidpo
źródło
5
QT to wieloplatformowy zestaw narzędzi, który jest używany nie tylko w KDE, podobnie jak GTK. I proszę powstrzymać się od pisania „txt lik dis” ...
Uri Herrera