Яка різниця між GTK і QT?


29

Будь ласка, поводьтеся зі мною, оскільки я новачок у Linux. Я писав програми GUI в REALbasic на Mac кілька років. Я намагаюся вивчити Python і хочу написати графічні програми для Linux (в першу чергу Ubuntu та Mint, оскільки вони є дистрибутивом, до якого я маю доступ, і вони здаються найпопулярнішими). У мене в основному є три питання:

  1. Чи є істотні відмінності між GTK та QT
  2. Я грав quicklyі Gladeз Ubuntu, і я розумію, що вони базуються на GTK 2, і це вже застаріло. Це правильно?
  3. Чи є редактори «все в одному», які дозволяють мені розробити графічний інтерфейс, а потім додати до нього код Python? (наприклад, додайте кнопку до вікна в редакторі, двічі клацніть по кнопці, а потім додайте код Python, який потрібно виконати при натисканні кнопки)

Вибачте, якщо це справді тупі питання, але я хочу почати вивчати "правильні" інструменти з самого початку.


2
Зараз у мене немає часу відповісти на ваші запитання, але я можу щось уточнити. Glade використовувався як бібліотека, так і формат файлу визначення інтерфейсу користувача та додаток для створення цих файлів .glade. Тепер ми використовуємо GtkBuilder для того, що раніше використовував формат Glade, і що вбудовано в GTK. Додаток Glade працює як чудовий інструмент для створення .ui файлів для GtkBuilder (або просто для тестування різних макетів), а Glade 3.x звичайно робить Gtk3 - хоча не все є на даний момент.
Ділан МакКолл

Це дуже корисно. Тож якщо я вирішу використовувати GTK як свій інструментарій, тоді я б використав Glade для розробки макета та іншого інструменту для зв’язку мого коду Pyhton та дизайну інтерфейсу - правильно?
Ноотріно

Так, і цей інструмент є частиною GTK, тому його тут задокументовано: developer.gnome.org/gtk3/3.1/GtkBuilder.html Я посилаю вас на документацію C, оскільки вона досить детальна, і коли ви використовуєте PyGObject єдиною реальною різницею буде синтаксис. У Python назви та матеріали будуть виглядати приблизно так: valadoc.org/gtk+-3.0/Gtk.Builder.html
Ділан МакКолл

Відповіді:


12

Я спробую відповісти на ваші запитання, не йдучи в шалених напрямках.

  1. Вони суттєво відрізняються, незважаючи на те, що вони обидва віджети. Регулярний GTK + заснований на C, а QT на C ++. Хоча прив'язки існують майже для всіх мов програмування.

  2. Ви досить коректно ставитесь до GTK2, хоча застосувань GTK2 дуже багато. Я очікую, що GTK2 буде в користуванні деякий час, як і GTK1. Коли поштовх приходить до поштовху, GTK2 застаріло, а якщо ви починаєте свіжим, перейдіть на GTK3.

  3. Remeber GTK та QT - лише інструментальні інструменти віджетів. Наприклад ... Програми Gnome, використовуйте GTK, а також Gnome-Libs. Якщо ви цього хочете, погляньте на vala. Це вважається простим, vala збирає джерело-джерело безпосередньо на C і має повні прив’язки для багатьох мов програмування. Ви також можете подивитися на Anjuta, просто переконайтеся, що у вас є нові gtk3 версії. Мабуть, протока PyGTK підтримує лише GTK2, останній я перевірив. Якщо ви хочете уникати всіх лінз Linux DE, я б запропонував переглянути QT. Звичайний QT відрізняється від програм KDE, до яких належать KDE libs. QT вважається дуже крос-платформою, що класно, якщо ви хочете компілювати для non * nix. Якщо ви хочете розпочати роботу з QT + Python, подивіться на PySide (LGPL) або PyQT (GPL). У QT є кілька хороших конструкторів графічного інтерфейсу, такі як Qt Creator та qt-дизайнер.


Дякую за це Anjuta в значній мірі схоже на те, на що я пішов. Я трохи пограю з цим. Якщо це неправильно, я перегляну QT. Мене вражає, що і GTK, і QT досягають однакового кінцевого результату - я думаю, це лише питання переваги.
Ноотріно

Qt - це набагато більше, ніж просто інструментарій віджетів. Це цілий фреймворк, що реплікує великі куски STL та Boost.
Скоттл

@scottl, я не намагався обмежити QT. Хоча QT більш здатний, ніж просто віджети, саме в цьому контексті він став частиною потенційного рішення.
Дж. М. Бекер

@Nootrino: вам доведеться пам’ятати у світі FLOSS, часто існує декілька встановлених рішень. Причина, яку вибрали багато людей, одна чи інша, ґрунтується на їхній позиції C vs, C ++. Звичайно, ліцензія відігравала більшу роль у минулому. Незалежно від того, що існують інші рамки на багатьох мовах, ви зазвичай погоджуєтесь більше з одним методом.
Дж. М. Бекер

@Nootrino: Я радий, що зміг реально допомогти!
Дж. М. Беккер

5

GTK та Qt - це набори інструментів для користувальницького інтерфейсу з відкритим кодом та рамки розробки. Це дві найпопулярніші рамки, що використовуються для Linux, оскільки вони є відкритим кодом і дають розробникам потужний інструментарій для розробки графічних інтерфейсів користувача. GTK використовується як стандартний набір інструментів для середовищ GNOME, LXDE та Xfce Desktop, тоді як Qt використовується для KDE.

Якщо ви кодуєте в C, то, очевидно, перейдіть на GTK +

Якщо ви введете код у C ++, перейдіть на Qt, інакше ви отримаєте не Gtkmm (обгортка C ++ над GTK +)

Якщо ви вводите код у Python, і GTK +, і Qt мають прив'язки до мови: див. PyGtk, PyQt та PySide (ті, які розпочала сама Nokia).


Якщо ви використовуєте Python, PyGTK застарілий. Для нових проектів вам буде набагато краще використовувати PyGObject (python-gobject у сховищі Ubuntu): live.gnome.org/PyGObject PyGObject дозволяє підключатися до будь-якої бібліотеки, побудованої на GLib (наприклад, GTK) через Python, без зайвих шарів. Ви отримуєте щось дуже схоже на PyGTK, але йдеться про це зовсім інакше. І, звичайно, PyGObject - єдиний спосіб поговорити з GTK3 через Python.
Ділан Макколл

-2

Qt використовується в основному в KDE, а GTK + у GNOME. Отже, якщо ви хочете розробити для GNOME, врахуйте GTK +, оскільки необхідні залежності для бібліотек GTK + вже повинні бути встановлені в системі GNOME; кінцевому користувачеві не потрібно буде їх встановлювати. Розробка GTK + також виграє інструмент під назвою Glade Interface Designer ; за бажанням ви можете використовувати це для створення своїх інтерфейсів користувача.


5
QT - це інструментарій для багатоплатформних інструментів, який використовується не лише у KDE, а також у GTK. І, будь ласка, утримайтеся від написання "txt lik dis" ...
Урі Еррера
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.