Программа Python / Sqlite, написать в качестве приложения для браузера или настольного приложения? - PullRequest
5 голосов
/ 27 мая 2010

Я нахожусь на стадии планирования переписывания базы данных Access, которую я написал несколько лет назад в полноценной программе. У меня очень небольшой опыт программирования, но этого недостаточно, чтобы назвать себя программистом. Я определенно буду учиться по ходу дела, поэтому я бы хотел, чтобы все было как можно проще. Я выбрал Python и SQLite для своей программы, но мне нужна помощь в моем следующем решении.

Вот моя ситуация

1) Он будет запускаться локально на каждой машине, на всех компьютерах с Windows

2) Мне бы очень понравился приятный графический интерфейс с цветами, красивыми экранами, меню, списками и т. Д.,

3) Я думаю об использовании интерфейса браузера, потому что (а) из того, что я прочитал, приложения для браузера может выглядеть действительно великолепно, и (б) я понимаю, что существует множество бесплатных инструментов, помогающих в настройке кода GUI / GUI с помощью инструментов перетаскивания, что помогает моей цели «держать все просто».

4) Я хочу, чтобы программа была полностью переносимой, чтобы она полностью работала из одной папки на компьютере пользователя, без необходимости установки (ей) для запуска

(Если бы я сделал это как приложение для браузера, разве не было возможности, что настройки браузера пользователя могли повлиять или сломать приложение. Насколько вероятно это?)

Для моей ситуации, должен ли я сделать это браузерным приложением? Какие плюсы и минусы для моей ситуации?

Ответы [ 8 ]

4 голосов
/ 05 июня 2010

Написание настольного приложения в виде локально размещенного веб-приложения обычно не является хорошей идеей.Хотя можно создавать отличные пользовательские интерфейсы с использованием HTML, CSS и Javascript, гораздо проще создавать интерфейсы с традиционными структурами графического интерфейса пользователя.

Использование веб-технологий для создания настольного графического интерфейса пользователя может привести к излишней сложностиваше приложение.

  • Создание пользовательских интерфейсов с использованием HTML и CSS является сложным и трудоемким процессом.HTML - это язык разметки document , а CSS - язык форматирования document ;ни один из них не подходит для создания GUI.
  • Использование веб-технологий делает ваше приложение зависимым от веб-браузера пользователя.Слишком много людей все еще используют старые, поврежденные браузеры, такие как IE 6 и 7, которые не соответствуют современным стандартам.Вы потратите часы, если не дни, пытаясь отследить ошибки интерфейса, которые случаются только в определенных браузерах.
  • Вам потребуется обслуживать ваше приложение с веб-сервером, создавая еще один уровень сложности.Ваше приложение должно будет взаимодействовать с вашим интерфейсом через ограниченные веб-технологии без каких-либо преимуществ настоящего веб-приложения.

Вместо этого я рекомендую использовать настольный графический интерфейс.В частности, я думаю, что wxPython будет лучшим графическим интерфейсом для вас;он стабилен, широко используется, хорошо документирован и легко переносим.Кроме того, вы можете использовать построитель интерфейса на основе графического интерфейса, такой как Boa Constructor или, возможно, wxGlade для разработки пользовательского интерфейса вашего приложения.Таким образом, создание приложения практически с любой структурой графического интерфейса пользователя будет проще, чем использование веб-технологий.

4 голосов
/ 31 мая 2010

Я сделал настольное приложение, работающее на Windows, и я думаю, что это отличный способ разработки приложения.

Я бы порекомендовал взглянуть на бутылку . Это легкий веб-фреймворк. Например, он меньше, чем Джанго, но это хорошо. Он может быть упакован с py2exe, если вы хотите развернуть на машинах без Python.

В Интернете много библиотек javascript, которые могут вам помочь. Мне нравятся jquery и jquery-ui, Raphaeljs ... но есть и другие.

Мое приложение работает в небольшом браузере на основе mshtml компонента Pajama-Desktop . Таким образом, пользователь не знает, что это веб-приложение. Но вы можете позволить приложению работать в любимом браузере, модуль python для веб-браузера может быть вам интересен.

Если вашему приложению необходим доступ к вашей файловой системе, приложение на основе браузера может быть сложным. Из соображений безопасности браузер не имеет полного доступа к вашей файловой системе. Однако вы можете имитировать файл, открытый с помощью ajaxupload , и сохранять файл с помощью iframe .

Если это касается только базы данных sqllite, я думаю, что это очень хороший выбор.

Надеюсь, это поможет

3 голосов
/ 27 мая 2010
3 голосов
/ 27 мая 2010
  1. Вы не упомянули, используете ли вы windows, linux или любую другую ОС.
  2. Если вы пишете приложение для браузера, в первую очередь вам понадобится веб-сервер, если каждый пользователь запускает приложение на своем локальном компьютере => означает, что у каждого пользователя должен быть локальный веб-сервер.

Также существует множество наборов инструментов для быстрой разработки GUI, таких как wxPython и Glade, которые упрощают и упрощают разработку приложений с графическим интерфейсом.

Я бы посоветовал, если вы создаете сетевое приложение -> по маршруту браузера.

Если вы создаете отдельное приложение, переходите к собственному приложению.

Вот почти исчерпывающий список всех фреймворков. Вы можете выбрать то, что соответствует вашим потребностям. http://wiki.python.org/moin/GuiProgramming

Лично я предпочитаю PyGtk, однако с ним связана небольшая кривая обучения, если вы раньше не занимались программированием с графическим интерфейсом.

1 голос
/ 05 июня 2010

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

  • Приложение Rich Client: Обычно разрабатывается как отдельное приложение. Может поддерживать отключенные или иногда подключенные сценарии. Использует ресурсы обработки и хранения локального компьютера.

  • Веб-приложение: Может поддерживать несколько платформ и браузеров. Поддерживает только подключенные сценарии. Использует ресурсы обработки и хранения сервера.

Я лично предпочитаю PyQt в вашем случае для портативного приложения.

Домашняя страница PyQt: http://www.riverbankcomputing.com/software/pyqt/

PyQt поддерживает платформы Windows, Linux, UNIX и MacOS / X.

PyQt4 - это набор привязок Python для Qt 4, которые имеют двойную лицензию под лицензией GPL (версии 2 и 3, с дополнительными исключениями для лицензий) и коммерческой лицензией. Существует также PySide от Nokia - новые альтернативные привязки (по состоянию на ноябрь 2009 г.) с лицензией LGPL, которые борются за то, чтобы быть API-совместимыми (как минимум до Qt 4.6) с PyQt4.

Инструменты и документы

  • Справочная документация PyQt.

  • PyQt4 book: http://www.qtrac.eu/pyqtbook.html

  • Утилита pyuic4 представляет собой интерфейс командной строки для модуля uic. Конвертируйте xml ui из Qt в python.

Qt Designer - это мощный кроссплатформенный макет графического интерфейса и конструктор форм. Это позволяет быстро проектировать и создавать виджеты и диалоговые окна, используя экранные формы, используя те же виджеты, которые будут использоваться в вашем приложении. PyQt4 предоставляет большую часть функциональности Qt 4 (от Nokia) для Python, включая:

  • Полный набор виджетов

  • Гибкие менеджеры по расположению

  • Стандартные функции графического интерфейса для приложений (меню, панели инструментов, окна док-станции)

  • Простая связь между компонентами приложения (сигналы и слоты)

  • Унифицированная система рисования с прозрачностью, сглаживанием, интеграцией OpenGL и поддержкой SVG

  • Поддержка интернационализации (i18n) и интеграция с инструментом перевода Qt Linguist

  • Etc.

1 голос
/ 04 июня 2010

Я бы предложил приложение для браузера. Это устраняет необходимость в установке на клиентских компьютерах (и, как таковых, в зависимости от ОС) и доступно из любой точки мира, если DNS правильно настроен для сервера.

Использование веб-интерфейса позволяет использовать некоторые из более мощных инструментов пользовательского интерфейса, например:

  • Возможность использовать CSS для эффектного дизайна
  • Доступность утилит JavaScript ( jQuery , ExtJS и т. Д.)
  • Легко изменяется по сравнению с настольными приложениями
  • Более высокая доступность
  • Согласованный пользовательский интерфейс (например, пользователи уже знают , как работает «назад» и т. Д.)
  • Централизованные обновления (просто обновляйте сервер, а не каждого клиента)
1 голос
/ 28 мая 2010

Я думаю, что это должно работать. Чего вы боитесь? Настройки прокси, брандмауэр?

Я думаю, что локальный веб-сервер не сложен для опытного пользователя, но это может быть проблемой для обычного пользователя (даже интегрированного в ваше приложение).

Вероятно, вам следует запускать ваше приложение как службу, потому что принуждение пользователя к запуску сервера перед входом на веб-страницу может разочаровать.

Я бы предпочел другие решения. Я бы, вероятно, использовал Java (Swing) или C ++ с QT. Но мне нравится Ваш подход, особенно потому, что он позволяет легко создавать прототипы. Если вы предпочитаете разработку веб-стилей, попробуйте http://www.appcelerator.com/products/titanium-desktop-application-development/, он создает настольные приложения с использованием html + java script + webkit. Но я сам не пробовал (но хотел бы).

Также Adobe Air может быть хорошим вариантом для Вас.

0 голосов
/ 05 июня 2010

Ваш вопрос немного широк. Я постараюсь охватить как можно больше.

Во-первых, что я понял и мои предположения.

В вашей ситуации база данных sqlite - это просто хранилище данных. Только один процесс (если ваше приложение не является многопроцессорным) будет обращаться к нему, поэтому вам не придется беспокоиться о проблемах блокировки. Приложению не нужно общаться с другими экземплярами и т. Д. По сети. Это одно настольное приложение. Платформа Windows.

Вот некоторые мысли, которые приходят на ум.

  • Если вы разрабатываете приложение на Python (веб-приложение или рабочий стол), вам нужно будет упаковать его в один исполняемый файл и распространить среди своих пользователей. Возможно, им придется установить среду выполнения Python, а также любые дополнительные модули, которые вы можете использовать.
  • По моему опыту, Guis легче разрабатывать с использованием автономной системы виджетов, чем в браузере с Javascript. Есть такие вещи, как пижама, которые делают это лучше, но это все еще сложно.
  • Хотя локальные веб-приложения на каждом компьютере не могут быть запущены, ваши реальные преимущества получатся, если вы централизуете их. Одно место для обновления программного обеспечения. Нет необходимости «распространять» и т. Д. Это, конечно, влечет за собой то, что вы используете более мощную систему баз данных, и вы можете фактически управлять несколькими пользователями. Это также потребует, чтобы вы беспокоились о специфических особенностях браузера.

Я бы пошел с простым настольным приложением, которое использует предварительно упакованный инструментарий (возможно, Tkinter, который поставляется с Python). Это не лучший подход, но он избежит проблем для вас. Я бы также подумал об использовании языка, который более "первоклассен" в таких окнах, как C #, так что среда выполнения и другие вещи уже есть. Ваше требование к причудливому графическому интерфейсу является второстепенным, и я бы порекомендовал, чтобы вы работали нормально, прежде чем сосредоточиться на наворотах.

Удачи.

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