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

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

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

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

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

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

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

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

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

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

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

Я настоятельно рекомендую Rapid GUI Programming python development book. Авторская страница .

Я помню, что Elsevier выпустил книгу Python-GUI, но ссылка и имя меня убежали.

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

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

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

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

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

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

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

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

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

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