Apa perbedaan antara GTK dan QT?

29

Mohon bersabar karena saya adalah pendatang baru di Linux. Saya telah menulis program GUI dalam REALbasic pada Mac selama beberapa tahun. Saya mencoba untuk belajar Python dan saya ingin menulis aplikasi GUI untuk Linux (terutama Ubuntu dan Mint karena mereka adalah distro yang saya miliki aksesnya dan tampaknya itu yang paling populer). Saya pada dasarnya memiliki tiga pertanyaan:

  1. Apakah ada perbedaan signifikan antara GTK dan QT
  2. Saya bermain-main dengan quicklydan Gladedi Ubuntu tetapi saya mengerti bahwa mereka didasarkan pada GTK 2 dan ini sekarang sudah usang. Apakah itu benar?
  3. Apakah ada editor lengkap yang mengizinkan saya mendesain GUI dan kemudian menambahkan kode Python ke dalamnya? (misalnya, tambahkan tombol ke jendela di editor, klik dua kali tombol dan kemudian tambahkan kode Python yang akan dijalankan ketika tombol ditekan)

Maaf jika ini adalah pertanyaan yang benar-benar bodoh, tetapi saya ingin mulai mempelajari alat yang 'benar' dari awal.

Nootrino
sumber
2
Saya tidak punya waktu sekarang untuk menjawab pertanyaan Anda, tetapi saya dapat mengklarifikasi sesuatu. Glade digunakan sebagai pustaka, format untuk file definisi UI dan aplikasi untuk membuat file .glade. Sekarang kita menggunakan GtkBuilder untuk apa yang digunakan format Glade, dan itu dibangun untuk GTK. Aplikasi Glade hidup sebagai alat yang hebat untuk membuat file .ui untuk GtkBuilder (atau hanya untuk menguji tata letak yang berbeda), dan Glade 3.x tentu saja melakukan Gtk3 - meskipun tidak semuanya ada pada saat ini.
Dylan McCall
Itu sangat membantu. Jadi jika saya memutuskan untuk menggunakan GTK sebagai toolkit saya maka saya akan menggunakan Glade untuk mendesain tata letak dan alat lain untuk menghubungkan kode Pyhton saya dan desain UI - benar?
Nootrino
Yap, dan alat itu adalah bagian dari GTK, jadi itu didokumentasikan di sini: developer.gnome.org/gtk3/3.1/GtkBuilder.html Saya menghubungkan Anda ke dokumentasi C karena itu cukup rinci, dan ketika Anda menggunakan PyGObject satu-satunya perbedaan nyata adalah sintaks. Dalam Python, nama-nama dan hal-hal akan terlihat seperti ini: valadoc.org/gtk+-3.0/Gtk.Builder.html
Dylan McCall

Jawaban:

12

Saya akan mencoba menjawab pertanyaan Anda, tanpa pergi ke arah yang gila.

  1. Mereka secara signifikan berbeda, meskipun keduanya adalah lib widget. GTK + reguler didasarkan pada C, dan QT pada C ++. Meskipun binding ada untuk hampir setiap bahasa pemrograman.

  2. Anda cukup benar tentang GTK2, meskipun ada begitu banyak aplikasi GTK2. Saya berharap GTK2 akan digunakan untuk sementara waktu, seperti halnya GTK1. Ketika dorongan datang untuk mendorong, GTK2 sudah usang, dan jika Anda baru memulai, pergi GTK3.

  3. Ingat GTK, dan QT, hanyalah widget toolkit. Misalnya ... aplikasi Gnome, gunakan GTK dan juga Gnome-Libs. Jika Anda menginginkannya, lihatlah vala. Ini dianggap sederhana, vala mengkompilasi sumber-ke-sumber langsung ke C, dan memiliki ikatan penuh untuk banyak bahasa pemrograman. Anda mungkin juga ingin melihat Anjuta, pastikan Anda memiliki versi gtk3 baru. Rupanya selat PyGTK hanya mendukung GTK2, yang terakhir saya periksa. Jika Anda ingin menghindari semua Linux DE libs, saya sarankan melihat QT. Plain QT berbeda dari aplikasi KDE, yang termasuk lib KDE. QT dianggap sangat lintas platform, yang keren jika Anda ingin mengkompilasi untuk non * nix. Jika Anda ingin memulai dengan QT + Python, lihat PySide (LGPL) atau PyQT (GPL). QT memiliki beberapa pembangun GUI yang bagus seperti pembuat qt, dan desainer qt.

JM Becker
sumber
Terima kasih untuk ini. Anjuta sangat mirip dengan apa yang saya cari. Saya akan sedikit mempermainkannya. Jika tidak benar maka saya akan melihat QT. Menurut saya, baik GTK maupun QT mencapai hasil akhir yang sama - hanya masalah preferensi saja.
Nootrino
Qt jauh lebih dari sekedar toolkit widget. Ini adalah keseluruhan kerangka kerja, mereplikasi potongan besar STL dan Boost.
scottl
@ skottl, saya tidak mencoba membatasi QT. Sementara QT lebih mampu dari sekadar widget, itu dalam konteks itu menjadi bagian dari solusi potensial.
JM Becker
@Nootrino: Anda harus ingat di dunia FLOSS, seringkali ada lebih dari satu solusi yang mapan. Alasan mengapa banyak orang memilih, satu atau yang lain, didasarkan pada posisi C vs, C ++. Tentu saja, lisensi memainkan peran yang lebih besar di masa lalu. Terlepas dari kerangka kerja lain dalam banyak bahasa ada, Anda biasanya lebih setuju dengan satu metode.
JM Becker
@Nootrino: Saya senang saya benar-benar bisa membantu!
JM Becker
5

GTK dan Qt adalah toolkit antarmuka antarmuka pengguna dan kerangka pengembangan open-source open source. Ini adalah dua kerangka kerja paling populer yang digunakan untuk Linux karena mereka adalah open-source dan memberikan pengembang toolkit yang kuat untuk merancang Graphical User Interfaces. GTK digunakan sebagai toolkit standar untuk Lingkungan Desktop GNOME, LXDE dan Xfce sementara Qt digunakan untuk KDE.

Jika Anda kode dalam C, maka jelas pergi untuk GTK +

Jika Anda kode dalam C ++, pilih Qt, jika tidak Anda akan ned Gtkmm (pembungkus C ++ lebih dari GTK +)

Jika Anda kode dalam Python, GTK + dan Qt memiliki binding untuk bahasa: lihat PyGtk, PyQt dan PySide (yang diluncurkan oleh Nokia sendiri).

Satu Nol
sumber
Jika Anda menggunakan Python, PyGTK sudah tidak digunakan lagi. Untuk proyek baru, Anda akan jauh lebih baik menggunakan PyGObject (python-gobject di repositori Ubuntu): live.gnome.org/PyGObject PyGObject memungkinkan Anda terhubung ke perpustakaan yang dibangun di GLib (seperti GTK) melalui Python, tanpa lapisan tambahan. Anda mendapatkan sesuatu yang sangat mirip dengan PyGTK, tetapi hasilnya sangat berbeda. Dan, tentu saja, PyGObject adalah satu-satunya cara untuk berbicara dengan GTK3 melalui Python.
Dylan McCall
-2

Qt terutama digunakan di KDE, dan GTK + di GNOME. Jadi jika Anda ingin mengembangkan untuk GNOME, pertimbangkan GTK + karena dependensi yang diperlukan untuk perpustakaan GTK + harus sudah diinstal pada sistem GNOME; pengguna akhir tidak perlu menginstalnya. Pengembangan GTK + juga diuntungkan oleh alat yang disebut Glade Interface Designer ; jika diinginkan, Anda dapat menggunakannya untuk membuat antarmuka pengguna.

kosaidpo
sumber
5
QT adalah toolkit lintas platform yang tidak hanya digunakan di KDE, dan begitu juga GTK. DAN tolong jangan menulis "txt lik dis" ...
Uri Herrera