GTK ve QT arasındaki fark nedir?


29

Lütfen Linux konusunda yeni olduğum için benimle birlikte kalın. Birkaç yıldır GUI programlarını REALbasic'ta Mac'te yazıyorum . Python'u öğrenmeye çalışıyorum ve Linux için GUI uygulamaları yazmak istiyorum (öncelikli olarak Ubuntu ve Mint çünkü erişebildiğim dağıtımlar ve en popüler gibi görünüyorlar). Temelde üç sorum var:

  1. GTK ve QT arasında önemli bir fark var mı
  2. Ubuntu ile quicklyve onunla oynuyordum Gladeancak GTK 2'ye dayandıklarını ve bunun artık eski olduğunu biliyorum. Bu doğru mu?
  3. Bir GUI tasarlayıp daha sonra Python kodunu eklememe izin veren hepsi bir arada düzenleyiciler var mı? (örneğin, editördeki bir pencereye düğme ekleyin, düğmeyi çift tıklayın ve ardından düğmeye basıldığında çalıştırılacak olan Python kodunu ekleyin)

Bunlar gerçekten aptalca sorularsa özür dilerim ama 'doğru' araçları en baştan öğrenmeye başlamak istiyorum.


2
Şu anda sorularınızı cevaplamak için zamanım yok, ama bir şeyi açıklığa kavuşturabilirim. Glade, bir kütüphane, bir UI tanım dosyası için bir format ve bu .glade dosyalarını oluşturmak için bir uygulama olarak kullanılırdı. Şimdi, Glade formatının ne yaptığı ve GTK'da yerleşik olarak kullanılan GtkBuilder'ı kullanıyoruz. Glade, GtkBuilder için (veya sadece farklı düzenleri test etmek için) .ui dosyaları oluşturmak için harika bir araç olarak yaşar ve Glade 3.x kesinlikle Gtk3'ü yapar - her şey şu anda olmasa da.
Dylan McCall

Bu çok yardımcı oldu. Bu yüzden GTK'yı araç setim olarak kullanmaya karar verirsem, düzenimi ve Pyhton kodumu ve UI tasarımımı birbirine bağlamak için başka bir araç tasarlamak için Glade kullanırdım - doğru mu?
Nootrino,

Evet, ve bu araç GTK'nın bir parçası, bu yüzden burada belgelenmiştir: developer.gnome.org/gtk3/3.1/GtkBuilder.html Sizi C belgelerine bağlıyorum çünkü oldukça ayrıntılı ve PyGObject kullanıyorsanız tek gerçek fark sözdizimi olacaktır. Python'da isimler ve benzeri şeyler şöyle görünecektir: valadoc.org/gtk+-3.0/Gtk.Builder.html
Dylan McCall

Yanıtlar:


12

Sorularınızı çılgınca yönlere girmeden cevaplamaya çalışacağım.

  1. Her ikisi de widget lib'leri olsalar bile, önemli ölçüde farklıdırlar. Normal GTK +, C ++ 'da C ve QT' ye dayanır. Her programlama dili için ciltleme var olmasına rağmen.

  2. Çok fazla GTK2 uygulaması olmasına rağmen, GTK2 konusunda oldukça haklısınız. GTK2'nin bir süre daha kullanılmasını bekliyorum, aynı GTK1’de olduğu gibi. İtme kıpırdadığında, GTK2 kullanımdan kaldırıldı ve yeni başlıyorsanız GTK3'e gidin.

  3. Remeber GTK ve QT, sadece araç gereçlerdir. Örneğin ... Gnome uygulamaları, GTK'yı ve ayrıca Gnome-Lib'leri kullanın. Eğer istersen, Vala'ya bir bak. Basit olduğu kabul edilirse, vala doğrudan kaynaktan C'ye kaynağa derlenir ve birçok programlama dili için tam olarak bağlanır. Ayrıca Anjuta'ya bakmak isteyebilirsiniz, sadece yeni gtk3 sürümlerine sahip olduğunuzdan emin olun. Görünüşe göre PyGTK Boğazı sadece son kontrol ettiğim GTK2'yi destekliyor. Tüm Linux DE kütüphanelerinden uzak durmayı düşünüyorsanız, QT'ye bakmanızı öneririm. Düz QT, KDE kütüphanelerini içeren KDE uygulamalarından farklıdır. QT, çapraz olmayan bir platform olarak kabul edilir; bu, * nix olmayan bir dosya için derleme yapmak için uygundur. QT + Python ile başlamak istiyorsanız, PySide (LGPL) veya PyQT (GPL) 'ye bakın. QT, qt creator ve qt-designer gibi bazı GUI geliştiricilerine sahiptir.


Bunun için teşekkürler. Anjuta benim peşimden geldiğime benziyor. Biraz onunla oynayacağım. Doğru değilse, QT'ye bakacağım. Hem GTK hem de QT'nin aynı sonuca ulaştığı beni etkiliyor - bu sadece bir tercih meselesi.
Nootrino,

Qt, bir widget araç setinden çok daha fazlasıdır. STL ve Boost'un büyük parçalarını kopyalayan bütün bir çerçevedir.
scottl

@scottl, QT'yi sınırlamaya çalışmıyordum. QT sadece widgetlardan daha yetenekli olsa da, bu bağlamda potansiyel çözümün bir parçası haline geldi.
JM Becker,

@ Nootrino: FLOSS dünyasında hatırlamak zorundasınız, genellikle birden fazla yerleşik çözüm vardır. Pek çok insanın birini ya da diğerini seçmesinin nedeni, C + C + 'ya dayanmalarına dayanır. Tabii ki, lisans geçmişte daha büyük bir rol oynadı. Pek çok dilde başka çerçeveler olmasına rağmen, genellikle bir yöntemle daha fazlasını kabul edersiniz.
JM Becker,

@ Nootrino: Aslında yardım edebildiğime sevindim!
JM Becker

5

GTK ve Qt açık kaynaklı çapraz platformlu Kullanıcı Arabirimi araç setleri ve geliştirme çerçeveleridir. Bunlar Linux için kullanılan en popüler iki çerçevedir, çünkü bunlar açık kaynak kodludur ve geliştiricilere Grafiksel Kullanıcı Arayüzleri tasarlamada güçlü bir araç takımı sunar. GNOME, LOMEE ve Xfce Masaüstü Ortamları için standart bir araç kiti olarak kullanılırken, KDE için Qt kullanılır.

C kodunu girerseniz, açıkça GTK + 'ya gidin

Eğer C ++ 'da kodlarsanız Qt' a gidin, aksi takdirde Gtkmm (GTK + 'nın üzerinde bir C ++ sarıcısı) olacaksınız.

Python'da kodlarsanız, hem GTK + hem de Qt, dil için bağlayıcılara sahiptir: bkz. PyGtk, PyQt ve PySide (Nokia tarafından başlatılanlar).


Python kullanıyorsanız, PyGTK kullanımdan kaldırılmıştır. Yeni projeler için PyGObject'i (Ubuntu deposundaki python-gobject) kullanarak çok daha iyi olacaksınız: live.gnome.org/PyGObject PyGObject, GLT üzerine inşa edilmiş herhangi bir kütüphaneye (örneğin GTK gibi) Python üzerinden bağlanmanıza izin verir. PyGTK'ye çok benzer bir şey elde edersiniz, ancak bu oldukça farklı bir şekilde gerçekleşir. Ve elbette, PyGObject, GTK3 ile Python aracılığıyla konuşmanın tek yoludur.
Dylan McCall

-2

Qt, çoğunlukla KDE'de ve GTOME + da GNOME'da kullanılır. Dolayısıyla, GNOME için geliştirmek istiyorsanız, GTK + 'yı düşünün, çünkü GTK + kütüphaneleri için gerekli bağımlılıklar zaten bir GNOME sistemine kurulmalıdır; Son kullanıcının bunları yüklemesine gerek kalmayacak. GTK + geliştirme, Glade Arayüz Tasarımcısı adlı bir araçtan da yararlanır ; İsterseniz, kullanıcı arayüzlerinizi oluşturmak için bunu kullanabilirsiniz.


5
QT, sadece KDE'de kullanılmayan bir platformdur ve GTK'dır. VE "txt lik dis" i yazmaktan kaçının lütfen ...
Uri Herrera
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.