繁体   English   中英

用于跨平台应用程序的Python + QT,Windows Forms或Swing?

[英]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

优点:

  • Python语言
  • 开源在Python世界中很强大(很多库和用户)
  • SQLAlchemy:与数据库进行交互的绝佳方式,并且记录得非常好!

缺点:

  • 编译,分发和部署比较困难?
  • 没有QT经验
  • QT Designer不如Visual Studio Winforms设计器好

2).NET / Mono,Windows Forms,C#,(流畅)NHibernate,System.Data.SQLite

优点:

  • C#(我喜欢它,特别是与Java相比,希望获得更多经验)
  • Visual Studio中的Winforms GUI设计器看起来非常流畅
  • 智能感知
  • ClickOnce部署(?)
  • Windows窗体在Windows上看起来很好看

缺点:

  • (流畅)NHibernate远没有SQLAlchemy那么有记录; 同样烦人:流畅的文档引用了NHibernate文档,它引用了Hibernate(aargh!)。 但简单的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是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM