[英]Python + QT, Windows Forms or Swing for a cross-platform application?
我想开发一个小型/中型跨平台应用程序(包括GUI)。
我的背景:主要是带有MVC架构的Web应用程序,包括Python(Pylons + SqlAlchemy)和Java(熟悉语言,但不太喜欢它)。 我也知道一些C#。 到目前为止,我没有GUI编程经验(Windows Forms,Swing和QT)。
我计划使用SQLite进行数据存储:它似乎是一个很好的跨平台解决方案,并且具有一些强大的功能(例如,SQL Server Compact缺少的全文搜索)。
我做了一些研究,这些是我最喜欢的选择:
1)QT,Python(PyQT或PySide)和SQLAlchemy
优点:
缺点:
2).NET / Mono,Windows Forms,C#,(流畅)NHibernate,System.Data.SQLite
优点:
缺点:
3)JVM,Java + Jython,Swing,SQLAlchemy
(我在情绪上偏向于这个,但为了完整性而列出)
优点:
缺点:
(我排除的选项......只是为了避免对这些问题的讨论):
- wxWidgets / wxPython(现在QT是LGPLed)
- GTK / PyGTK
最终应用程序的外观对我来说非常重要。 上面的技术堆栈非常不同(PyQT,.NET WinForms,JVM Swing),需要一些时间才能熟练,所以:
您会推荐哪种替代方案?为什么?
我是一个Python人,自己使用PyQt,我可以完全推荐它。 关于你的缺点:
编译,分发和部署比较困难?
不,不是真的。 对于许多项目,例如cx_Freeze的完整setup.py
可能少于30行,很少需要更改(大多数import
依赖项是自动检测的,只需要指定几个无法识别的模块),然后是python setup.py
将构建一个独立的可执行文件。 然后你可以像C ++ .exe一样分发它。
没有QT经验
当我开始使用Qt(只有一点摆弄Tkinter)时,我没有显着的GUI体验,但我渐渐喜欢Qt。 大多数时候,所有小部件都可以无缝地工作并完成它们应该做的事情 - 并且它们有很多用于许多目的。 你可以命名,可能有一个小部件可以做到这一点,并且不会因为半成品而烦扰用户。 我们被宠坏的所有好东西都在那里。
Qt 是巨大的,但PyQt文档通过合理的搜索工作回答了大多数问题。 如果所有其他方法都失败并且你知道一些C ++,你也可以查看Qt资源。
QT Designer不如Visual Studio Winforms设计器好
我不知道VS Winforms设计师,但我必须承认Qt Designer缺乏。 我最终在设计器中制作了UI的草图,生成代码,清理它并手动处理所有剩余的细节。 到目前为止一切正常,但我的项目相当小。
PS:
(现在QT是LGPL)
PyQt仍然只是GPL。 PySide是LGPL,是的,但如果这是一个问题,它就不那么成熟了。 该项目网站指出,“现在开始开发PySide应该非常安全”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.