В чем разница между GTK и QT?

29

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

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

Извините, если это действительно глупые вопросы, но я хочу начать изучать «правильные» инструменты с самого начала.

Nootrino
источник
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 компилирует источник-источник непосредственно в C и имеет полные привязки для многих языков программирования. Вы также можете посмотреть на Anjuta, просто убедитесь, что у вас есть новые версии gtk3. Видимо пролив PyGTK поддерживает только GTK2, текущий последний раз я проверял. Если вы хотите избежать всех библиотек Linux DE, я бы посоветовал взглянуть на QT. Простой QT отличается от приложений KDE, которые включают библиотеки KDE. QT считается очень кроссплатформенным, что здорово, если вы хотите компилировать для не * nix. Если вы хотите начать работу с QT + Python, посмотрите на PySide (LGPL) или PyQT (GPL). В QT есть несколько хороших сборщиков графического интерфейса, таких как qt creator и qt-designer.

Дж. М. Беккер
источник
Спасибо за это. Анжута в значительной степени похожа на то, кем я был после. Я собираюсь немного поиграть с этим. Если это не правильно, я посмотрю на QT. Меня поражает, что и GTK, и QT достигают одного и того же конечного результата - я думаю, это просто вопрос предпочтений.
Ноотрино
Qt - это гораздо больше, чем просто набор инструментов для виджетов. Это целая структура, копирующая большие фрагменты STL и Boost.
Скотт
@scottl, я не пытался ограничить QT. Хотя QT более эффективен, чем просто виджеты, именно в этом контексте он стал частью потенциального решения.
Дж. М. Беккер
@Nootrino: вы должны помнить, что в мире FLOSS часто существует более одного устоявшегося решения. Причина, по которой многие люди выбирают, один или другой, основана на их положении C против C ++. Конечно, лицензия играла большую роль в прошлом. Независимо от того, существуют ли другие фреймворки во многих языках, вы обычно соглашаетесь с одним методом.
JM Becker
@Nootrino: Я рад, что смог реально помочь!
JM Becker
5

GTK и Qt - это кроссплатформенные наборы инструментов с открытым исходным кодом для интерфейса пользователя и среды разработки. Это две наиболее популярные платформы, используемые в Linux, поскольку они имеют открытый исходный код и предоставляют разработчикам мощный инструментарий для разработки графических пользовательских интерфейсов. GTK используется в качестве стандартного инструментария для сред рабочего стола GNOME, LXDE и Xfce, а 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 ; если вы хотите, вы можете использовать это для создания пользовательских интерфейсов.

kosaidpo
источник
5
QT - это кроссплатформенный инструментарий, он используется не только в KDE, но и в GTK. И, пожалуйста, воздержитесь от написания "txt lik dis" ...
Uri Herrera