Практический инструментарий 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.
Ответ 6
Я настоятельно рекомендую Rapid GUI Programming python development. Страница автора.
Я помню, что Elsevier выпустил книгу с книгой Python-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. Я использовал рубин с поляной, чтобы создать много графических интерфейсов.