Практический инструментарий GUI?

Я думаю о кросс-платформенном с хорошими связями языка программирования (Java, Ruby и Python). Какова была бы "самая плоская" кривая обучения, но все же достаточно полномочий для выполнения большинства стандартных функций графического интерфейса пользователя? Что бы вы, ребята, рекомендовали; FOX, wx, Tk или Qt?

Ответы

Ответ 1

Я бы пошел с Qt. Он работает на всех основных платформах и постоянно совершенствуется. Вы также можете начать работу очень быстро. Есть привязки для Java, Ruby и Python.
Плюс это бесплатно, если вы пишете программы с открытым исходным кодом.

Ответ 2

Честно говоря, я создал вещи с Tk, wx и Qt, и я ненавижу их всех одинаково. Qt визуальный редактор является наименее неприятным из трех, я думаю.

Ответ 3

WX весь путь! Я не специалист по графическим интерфейсам, дизайнер или даже "парень GUI", но в последнее время мне нужно было написать интерфейс для инструмента конфигурации продукта (на самом деле это набор инструментов, но нам нужен один интерфейс для доступа и запуска их все).
Все инструменты написаны на Python, поэтому я, естественно, обратился к Python для пользовательского интерфейса.
Я поселился на wxPython... один "импорт wx" и несколько уроков позже, я ударил фреймы, записные книжки и кнопочные панели, как я знал, что я делаю.
Я нашел много примеров, чтобы помочь мне, когда я застрял, и документы wxPython были очень полезны - хотя они всего лишь документы С++, они все еще были довольно интуитивными. Быстрый веб-поиск будет включать в себя массу учебных пособий wxPython, чтобы вы начали.

Я написал пару раз пару раз, но у меня был чистый, рабочий прототип в < 1 день. Инструмент был кросс-платформенным, и все окна и фреймы соответствовали системе родных окон (WinXP, Win2K3, Gnome и т.д.) - я был определенно впечатлен. Если мне когда-либо придется писать пользовательские интерфейсы на любом другом языке, я обязательно буду искать реализацию wx.

Ответ 4

Tk все еще очень жизнеспособное решение. Кривая обучения зависит от вас. Многие люди, как и я, могут или узнали все основы Tcl и Tk примерно через день. Есть те, которые продолжают бороться с синтаксисом после многих лет использования. Все зависит от того, насколько вы хорошо разбираетесь в вещах, которые вы изучили с помощью традиционных языков, таких как C и Java. Если у вас есть lisp на вашем фоне, вы, возможно, узнаете Tcl утром.

Другим преимуществом Tk является то, что он работает с Tcl, Perl, Python и Ruby (и другими), поэтому вы не зацикливаетесь на определенном языке. Хотя нет прямого порта Tk для Java. Изучите его на одном языке, и ваши знания легко перейдут на другие языки. Tk выходит из коробки с Tcl и Python, поэтому для этих языков больше нечего устанавливать.

Я скажу, однако, что после написания нескольких сотен строк кода Python/Tkinter за последние несколько недель я очень предпочитаю кодирование в Tcl, когда речь заходит о графических интерфейсах, но это более личное дело, чем что-либо еще.

Подробнее о Tk с Tcl, Ruby и Perl см. http://www.tkdocs.com

Ответ 5

Если вы рассматриваете Java, SWT - отличный кросс-платформенный инструментарий GUI.

Ответ 7

Я не работал с Qt, поэтому не могу судить об этом, но я работал с wx, и с ним довольно легко работать и все еще довольно скудно. Кроме того, wxWidgets предоставляет вам собственные виджеты на каждой платформе, что является огромным преимуществом (особенно для Mac). В то время как другие эмулируют внешний вид собственной платформы, wxWidgets напрямую использует собственные виджеты, которые быстрее для многих ситуаций.

Ответ 8

Если Java является вашим предпочтительным языком, рассмотрите Groovy. Это действительно хороший динамический язык, который находится поверх Java, и имеет некоторые действительно приятные функции (SwingBuilder) в отношении написания графических интерфейсов. Если бы не тот факт, что я очень продуктивен в Tcl/tk, я думаю, что Groovy будет моим личным вторым выбором, хотя я не большой поклонник Java или Swing как таковой. Groovy похоже, возьмет много скуки из обоих.

Для получения дополнительной информации см. Программирование GUI с помощью Groovy.

Ответ 9

Я рекомендую Gtk. Это хороший кросс-платформенный, красивый инструментарий. Он разработан с учетом языковых привязок и позволяет создавать приятные языковые привязки (pygtk, ruby ​​/gtk2, java-gnome, gtk # и т.д.). Gtk + довольно легко учиться.

Ответ 10

Я просто хочу упомянуть, что Qt намного больше, чем просто инструментарий GUI. Вы получаете гораздо больше с ним, все хорошо интегрированы в рамки, что было бы полезно использовать его, если вы рассматриваете кроссплатформенную разработку. Единственная проблема заключается в том, что если вы хотите использовать его через Python-связывание PyQt, вам придется заплатить за коммерческую лицензию PyQt (дорого) или код GPL.

Ответ 11

Gtk - отличный кросс-платформенный инструментарий. Кроме того, привязки для рубина доступны в рубигеме, поэтому его очень легко установить. Gtk используется для многих программ, таких как nautilus, и имеет множество возможностей. Компромисс в том, что Gtk делает так много, что он немного сложный.

Когда я пишу gui, я отказываюсь вручную кодировать каждый виджет, я настаиваю на создании графической среды для создания своих форм. Я думаю, что это означает использование Glade или QT Creator. Я попробовал QT Creator и нашел, что это так медленно, что я не мог его использовать, поэтому я создаю свои формы с помощью поляны.

Когда вы создаете свои формы на поляне, атрибуты формы сохраняются в XML файле, который может быть прочитан вашим языком. На многих языках есть модули "Gtk:: Builder", которые читают XML файлы, а затем используют GTK для отображения форм на экране во время выполнения. Поэтому, если вы используете поляну, вы можете использовать язык по вашему выбору (C java, ruby, python), и вам не нужно "вручную" кодировать все ваши формы.

Учитывая выбор языков, я бы выбрал ruby.

Справедливости ради, я не пробовал wxRuby или Tk. Но я знаю, что мне не нужны графические интерфейсы с ручным кодом. Вы можете увидеть мою работу над этим на visualruby.net. Я использовал рубин с поляной, чтобы создать много графических интерфейсов.