我正处于重写几年前我在一个完整的程序中编写的Access数据库的计划阶段。我有很少的编码经验,但还不足以称自己为程序员。我一定会像往常一样学习,所以我想尽量保持一切尽可能简单。我已经为我的程序决定使用Python和SQLite了,但是我的下一个决定需要帮助。
这是我的情况
1)它将在每台机器上本地运行,所有Windows计算机
2)我真的很喜欢带有颜色,漂亮的屏幕,菜单,列表等的漂亮的GUI,
3)我正在考虑使用浏览器界面,因为(a)来自我所读过的浏览器应用程序 看起来真的很棒,(b)据我所知,有许多免费工具可以帮助我们使用拖放工具设置GUI / GUI代码,这有助于我“保持简单”的目标。
4)我希望程序完全可移植,因此它可以完全从用户PC上的一个文件夹运行,无需安装即可运行
(如果我将其作为浏览器应用程序执行,那么用户的浏览器设置可能无法影响或破坏应用程序。这有多大可能?)
对于我的情况,是否应该将其设为浏览器应用?对我的情况有什么利弊?
答案 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会给应用程序带来大量不必要的复杂性。
我建议使用桌面GUI框架。特别是,我认为wxPython将是您使用的最佳GUI框架;它稳定,使用广泛,文档齐全,便于携带。此外,您可以使用基于GUI的界面构建器(如Boa Constructor或可能wxGlade)来设计应用程序的用户界面。总之,使用几乎任何桌面GUI框架创建应用程序比使用Web技术更容易。
答案 2 :(得分: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创建桌面应用程序。但我没有尝试过我自己(但我想)。
Adobe Air可能也是您的不错选择。
答案 5 :(得分:1)
我建议使用浏览器应用程序。这样就无需在客户端计算机上安装(因此,与操作系统无关),如果为服务器正确设置了DNS,则可以从世界上任何地方进行访问。
使用Web界面可以使用一些功能更强大的用户界面工具,例如:
答案 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)。
工具和文档
PyQt参考文档。
pyuic4实用程序是uic模块的命令行界面。从Qt到python的Conver xml ui。
Qt Designer是一个功能强大的跨平台GUI布局和表单构建器。它允许您使用将在应用程序中使用的相同小部件使用屏幕表单快速设计和构建小部件和对话框。 PyQt4将Qt 4(从诺基亚)的大部分功能暴露给Python,包括:
一套全面的小部件
灵活的布局管理器
应用程序的标准GUI功能(菜单,工具栏,停靠窗口)
应用程序组件(信号和插槽)之间的轻松通信
具有透明度,抗锯齿,OpenGL集成和SVG支持的统一绘画系统
国际化(i18n)支持和与Qt语言学家翻译工具的整合
等
答案 7 :(得分:0)
你的问题有点宽泛。我会尽力覆盖。
首先,我理解的和我的假设。
在您的情况下,sqlite数据库只是一个数据存储。只有一个进程(除非您的应用程序是多进程)将访问它,因此您不必担心锁定问题。应用程序不需要通过网络与其他实例等通信。这是一个桌面应用程序。该平台是Windows。
以下是一些想到的想法。
我会使用一个简单的桌面应用程序,该应用程序使用预先打包的工具包(也许是Tkinter随Python一起提供)。这不是最好的方法,但它会避免给你带来麻烦。我还考虑在C#这样的窗口上使用更“一流”的语言,以便运行时和其他东西已经存在。你需要一个花哨的GUI是次要的,我建议你在关注花里胡哨之前让功能正常工作。
祝你好运。