Python / Sqlite程序,写为浏览器应用程序或桌面应用程序?

时间:2010-05-27 19:28:17

标签: python sqlite browser

我正处于重写几年前我在一个完整的程序中编写的Access数据库的计划阶段。我有很少的编码经验,但还不足以称自己为程序员。我一定会像往常一样学习,所以我想尽量保持一切尽可能简单。我已经为我的程序决定使用Python和SQLite了,但是我的下一个决定需要帮助。

这是我的情况

1)它将在每台机器上本地运行,所有Windows计算机

2)我真的很喜欢带有颜色,漂亮的屏幕,菜单,列表等的漂亮的GUI,

3)我正在考虑使用浏览器界面,因为(a)来自我所读过的浏览器应用程序 看起来真的很棒,(b)据我所知,有许多免费工具可以帮助我们使用拖放工具设置GUI / GUI代码,这有助于我“保持简单”的目标。

4)我希望程序完全可移植,因此它可以完全从用户PC上的一个文件夹运行,无需安装即可运行

(如果我将其作为浏览器应用程序执行,那么用户的浏览器设置可能无法影响或破坏应用程序。这有多大可能?)

对于我的情况,是否应该将其设为浏览器应用?对我的情况有什么利弊?

8 个答案:

答案 0 :(得分:4)

我已经在Windows上运行了一个桌面应用程序,我认为这是开发应用程序的好方法。

我建议您查看bottle。它是一个轻量级的Web框架。例如,它比Django更少,但它做得很好。如果要在没有Python的计算机上部署,可以使用py2exe打包。

网上有很多javascript lib可以帮助你。我喜欢jquery和jquery-ui,raphaeljs ......但还有其他一些。

我的应用程序正在运行基于mshtml component of Pyjama-Desktop的小型浏览器。这样,用户不知道它是Web应用程序。但是你可以让应用程序运行到最喜欢的浏览器中,webbrowser python module可能会让你感兴趣。

如果您的应用需要访问您的文件系统,基于浏览器的应用可能会非常棘手。出于安全原因,浏览器无法完全访问您的文件系统。但是,您可以使用ajaxupload模仿文件打开,并使用iframe保存文件。

如果只处理sqllite数据库,我认为这是一个非常好的选择。

我希望它有所帮助

答案 1 :(得分:4)

将桌面应用程序编写为本地托管的Web应用程序通常不是一个好主意。虽然可以使用HTML,CSS和Javascript创建出色的用户界面,但使用传统的GUI框架创建界面要容易得多。

使用Web技术创建桌面GUI会给应用程序带来大量不必要的复杂性。

  • 使用HTML和CSS创建用户界面既困难又耗时。 HTML是文档标记语言,CSS是文档格式化语言;它们都不适合创建GUI。
  • 使用网络技术可使您的应用程序依赖于用户的Web浏览器。很多人仍在使用旧的,残缺不全的浏览器,如IE 6和7,不遵循现代标准。如果不是几天尝试追踪仅在某些浏览器上发生的界面错误,您将花费数小时。
  • 您需要使用Web服务器为您的应用程序提供服务,从而引入另一层复杂性。您的应用程序必须通过受限制的Web技术与您的界面进行通信,而不会产生真正的Web应用程序的任何好处。

我建议使用桌面GUI框架。特别是,我认为wxPython将是您使用的最佳GUI框架;它稳定,使用广泛,文档齐全,便于携带。此外,您可以使用基于GUI的界面构建器(如Boa Constructor或可能wxGlade)来设计应用程序的用户界面。总之,使用几乎任何桌面GUI框架创建应用程序比使用Web技术更容易。

答案 2 :(得分:3)

  1. 您没有提及您是在Windows,Linux还是其他任何操作系统上。
  2. 如果您正在编写浏览器应用程序,那么您需要的第一件事就是Web服务器,如果每个用户在其本地计算机上运行该应用程序=>表示每个用户必须在本地运行Web服务器。
  3. 还有很多Rapid Development GUI工具包,例如wxPython和Glade,它们使GUI应用程序的设计变得简单和容易。

    如果您正在构建网络应用,我建议您使用>采取浏览器路线。

    如果您要构建独立应用程序,请使用本机应用程序。

    这是所有框架的几乎详尽的列表。你可以选择任何适合你的需求。 http://wiki.python.org/moin/GuiProgramming

    我个人赞成PyGtk,但如果您之前没有进行任何GUI编程,它会有一些与之相关的学习曲线。

答案 3 :(得分:3)

答案 4 :(得分:1)

我认为它应该有效。你有什么好怕的呢?代理设置,防火墙?

我认为在本地运行网络服务器对高级用户来说并不难,但对于普通用户来说这可能是一个问题(甚至与您的应用集成在一起)。

可能你应该将你的应用程序作为服务运行,因为强迫用户在进入网页之前启动服务器,可能会令人沮丧。

我更喜欢其他解决方案。我可能会使用Java(Swing)或C ++和QT。但我喜欢你的方法,特别是它允许简单的原型设计。如果您更喜欢Web样式开发,可以试试http://www.appcelerator.com/products/titanium-desktop-application-development/它使用html + java script + webkit创建桌面应用程序。但我没有尝试过我自己(但我想)。

Adob​​e Air可能也是您的不错选择。

答案 5 :(得分:1)

我建议使用浏览器应用程序。这样就无需在客户端计算机上安装(因此,与操作系统无关),如果为服务器正确设置了DNS,则可以从世界上任何地方进行访问。

使用Web界面可以使用一些功能更强大的用户界面工具,例如:

  • 使用CSS进行精彩设计的能力
  • JavaScript实用程序的可用性(jQueryExtJS等)
  • 与桌面应用程序相比易于修改
  • 更高的辅助功能
  • 一致的用户界面(例如,用户已经知道“返回”的工作方式等)
  • 集中更新(只更新服务器,而不是每个客户端)

答案 6 :(得分:1)

您选择的应用程序类型将与技术限制和您计划提供的用户体验类型相关。

  • 富客户端应用程序: 通常作为独立应用程序开发。 可以支持断开连接或偶尔连接的方案。 使用本地计算机的处理和存储资源。

  • 网络应用程序: 可以支持多种平台和浏览器。 仅支持连接方案。 使用服务器的处理和存储资源。

我个人赞成将PyQt用于便携式应用程序。

PyQt的主页是http://www.riverbankcomputing.com/software/pyqt/

PyQt支持Windows,Linux,UNIX和MacOS / X平台。

PyQt4是Qt 4的一组Python绑定,它们在GPL(版本2和3,附加许可证例外)和商业许可证下进行双重许可。还有诺基亚的PySide - 新的替代绑定(截至2009年11月)与LGPL许可证很难与PyQt4进行API兼容(至少直到Qt 4.6)。

工具和文档

Qt Designer是一个功能强大的跨平台GUI布局和表单构建器。它允许您使用将在应用程序中使用的相同小部件使用屏幕表单快速设计和构建小部件和对话框。 PyQt4将Qt 4(从诺基亚)的大部分功能暴露给Python,包括:

  • 一套全面的小部件

  • 灵活的布局管理器

  • 应用程序的标准GUI功能(菜单,工具栏,停靠窗口)

  • 应用程序组件(信号和插槽)之间的轻松通信

  • 具有透明度,抗锯齿,OpenGL集成和SVG支持的统一绘画系统

  • 国际化(i18n)支持和与Qt语言学家翻译工具的整合

答案 7 :(得分:0)

你的问题有点宽泛。我会尽力覆盖。

首先,我理解的和我的假设。

在您的情况下,sqlite数据库只是一个数据存储。只有一个进程(除非您的应用程序是多进程)将访问它,因此您不必担心锁定问题。应用程序不需要通过网络与其他实例等通信。这是一个桌面应用程序。该平台是Windows。

以下是一些想到的想法。

  • 如果您使用Python(基于Web或桌面)开发应用程序,则必须将其打包为单个可执行文件并将其分发给您的用户。他们可能必须安装Python运行时以及您可能正在使用的任何额外模块。
  • 根据我的经验,使用独立的小部件系统比使用Javascript的浏览器更容易开发Guis。像睡衣这样的东西可以让它变得更好,但它仍然很难。
  • 虽然在每台计算机上运行本地Web应用程序并非不可能,但如果集中管理它,您的真正好处就来了。一个更新软件的地方。无需“分发”等。这当然需要您使用功能更强大的数据库系统,实际上您可以管理多个用户。它还需要您担心浏览器特定的怪癖。

我会使用一个简单的桌面应用程序,该应用程序使用预先打包的工具包(也许是Tkinter随Python一起提供)。这不是最好的方法,但它会避免给你带来麻烦。我还考虑在C#这样的窗口上使用更“一流”的语言,以便运行时和其他东西已经存在。你需要一个花哨的GUI是次要的,我建议你在关注花里胡哨之前让功能正常工作。

祝你好运。