Python + QT, Windows Forms или Swing для кроссплатформенного приложения? - PullRequest
11 голосов
/ 10 ноября 2010

Я бы хотел разработать кроссплатформенное приложение для малого / среднего размера (включая GUI).

Мой опыт: в основном веб-приложения с архитектурой MVC, как Python (Pylons + SqlAlchemy), так и Java (хорошо знают язык, но не очень-то его любят). Я также знаю немного C #. Пока у меня нет опыта программирования GUI (ни Windows Forms, ни Swing, ни QT).

Я планирую использовать SQLite для хранения данных: кажется, что это хорошее кроссплатформенное решение с некоторыми мощными функциями (например, полнотекстовый поиск, которого нет в SQL Server Compact).

Я провел некоторые исследования, и это мои любимые варианты:

1) QT, Python (PyQT или PySide) и SQLAlchemy

плюсы:

  • язык Python
  • открытый мир силен в мире Python (множество библиотек и пользователей)
  • SQLAlchemy: фантастический способ взаимодействия с БД и невероятно хорошо документированный!

минусы:

  • Компиляция, распространение и развертывание сложнее?
  • без опыта QT
  • QT Designer не так хорош, как дизайнер Visual Studio Winforms

2) .NET / Mono, Windows Forms, C #, (свободно) NHibernate, System.Data.SQLite

плюсы:

  • C # (мне это нравится, особенно по сравнению с Java и хотелось бы получить больше опыта в этом)
  • Дизайнер графических интерфейсов Winforms в Visual Studio выглядит очень привлекательно
  • IntelliSense
  • Развертывание ClickOnce (?)
  • Windows Forms хорошо выглядят в Windows

минусы:

  • (Свободно) NHibernate гораздо менее задокументирован, чем SQLAlchemy; Также раздражает: Свободные документы относятся к документам NHibernate, которые относятся к Hibernate (аааа!). Но обычный NHibernate + XML выглядит не очень удобно.
  • Windows Forms не будут выглядеть + вести себя нативно в Linux / Mac OS (правильно?)
  • меньше библиотек с открытым исходным кодом в мире .NET, меньше пользователей OSS, в целом меньше документации
  • нет WinForms и опыта NHibernate

3) JVM, Java + Jython, Swing, SQLAlchemy
(Я эмоционально пристрастен к этому, но для полноты перечислен)

плюсы:

  • JVM / Swing хорошо работают на кроссплатформенной основе
  • Jython
  • SQLAlchemy
  • множество библиотек с открытым исходным кодом

минусы:

  • Swing кажется уродливым и сложным для компоновки
  • не хватает хорошего дизайнера GUI
  • Угадай, что я не смогу избежать Java для UI
  • Не уверен, насколько стабильна интеграция Jython / Java

(варианты, которые я исключил ... просто чтобы не обсуждать их):
- wxWidgets / wxPython (теперь, когда QT поддерживается LGPL)
- GTK / PyGTK

Внешний вид финального приложения очень важен для меня. Вышеупомянутые технологические стеки сильно различаются (PyQT, .NET WinForms, JVM Swing) и требуют некоторого времени, чтобы овладеть навыками, поэтому:

Какую альтернативу вы бы порекомендовали и почему?

1 Ответ

5 голосов
/ 10 ноября 2010

Я парень из Python и использую PyQt сам, и я могу полностью рекомендовать его.По поводу ваших минусов:

Компиляция, распространение и развертывание более сложны?

Нет, не совсем.Для многих проектов полное значение setup.py, например, для cx_Freeze, может составлять менее 30 строк, которые редко нужно менять (большинство import зависимостей обнаруживаются автоматически, необходимо указать только несколько неопознанных модулей), а затем python setup.py создаст автономный исполняемый файл.Затем вы можете распространять его так же, как, например, C ++ .exe.

без опыта QT

У меня не было заметного опыта работы с GUI, когда я начинал с Qt (только немного возиться с Tkinter), но я полюбил Qt.В большинстве случаев все виджеты работают без сбоев и выполняют то, что должны делать - и их много для многих целей.Вы называете это, вероятно, есть виджет, который делает это, и не раздражает пользователя, будучи наполовину задницей.Все хорошие вещи, которыми мы были избалованы, есть.

Qt огромен, , но документация PyQt отвечает на большинство вопросов с разумными поисковыми усилиями.А если ничего не помогает, и вы немного знакомы с C ++, вы также можете взглянуть на ресурсы Qt.

QT Designer не так хорош, как дизайнер Visual Studio Winforms

Я не знаю дизайнера VS Winforms, но должен признать, что Qt Designer не хватает.В итоге я сделал набросок пользовательского интерфейса в конструкторе, сгенерировал код, очистил его и позаботился обо всех оставшихся деталях вручную.Пока все работает хорошо, но мои проекты довольно маленькие.


PS:

(теперь, когда QT поддерживается LGPL)

PyQt все еще только GPL.PySide - это LGPL, да, но он не настолько зрелый, если это вызывает озабоченность.На веб-сайте проекта говорится, что «начинать разработку на PySide сейчас должно быть довольно безопасно».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...