Практический инструментарий GUI? - PullRequest
14 голосов
/ 09 мая 2009

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

Ответы [ 11 ]

20 голосов
/ 09 мая 2009

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

7 голосов
/ 09 мая 2009

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

4 голосов
/ 09 мая 2009

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

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

3 голосов
/ 09 мая 2009

Тк все еще очень жизнеспособное решение. Кривая обучения во многом зависит от вас. Многие люди, как и я, могут или изучили все основы 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

2 голосов
/ 09 мая 2009

Я настоятельно рекомендую книгу Rapid GUI Programming python для программирования *1002*. Страница автора .

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

2 голосов
/ 09 мая 2009

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

1 голос
/ 09 мая 2009

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

1 голос
/ 09 мая 2009

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

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

1 голос
/ 09 мая 2009

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

0 голосов
/ 09 марта 2012

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

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

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

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

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

...