gpt4 book ai didi

c# - 用于跨平台应用程序的 Python + QT、Windows Forms 或 Swing?

转载 作者:太空狗 更新时间:2023-10-29 18:08:26 29 4
gpt4 key购买 nike

我想开发一个中小型跨平台应用程序(包括 GUI)。

我的背景:主要是采用 MVC 架构的 Web 应用程序,包括 Python(Pylons + SqlAlchemy)和 Java(很了解这门语言,但不太喜欢)。我也知道一些 C#。到目前为止,我没有 GUI 编程经验(既没有 Windows 窗体、Swing 也没有 QT)。

我打算使用 SQLite 进行数据存储:它似乎是一个不错的跨平台解决方案,并且具有一些强大的功能(例如,SQL Server Compact 缺少的全文搜索)。

我做了一些研究,这些是我最喜欢的选项:

1) QT、Python(PyQT 或 PySide)和 SQLAlchemy

优点:

  • Python 语言
  • 开源在 Python 世界中很强大(很多图书馆和用户)
  • SQLAlchemy:一种与数据库交互的绝妙方式,而且文档非常完备!

缺点:

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

2) .NET/Mono、Windows 窗体、C#、(流畅的)NHibernate、System.Data.SQLite

优点:

  • C#(我喜欢它,尤其是与 Java 相比,并希望在其中获得更多经验)
  • Visual Studio 中的 Winforms GUI 设计器看起来非常灵巧
  • 智能感知
  • ClickOnce 部署(?)
  • Windows 窗体在 Windows 上的外观和感觉都不错

缺点:

  • (流利)NHibernate 的文档远少于 SQLAlchemy;也很烦人:Fluent 文档引用 NHibernate 文档,而 NHibernate 文档引用 Hibernate(aargh!)。但是普通的 NHibernate + XML 看起来不太舒服。
  • Windows 窗体在 Linux/Mac OS 上看起来和行为不自然(对吗?)
  • .NET 世界中的开源库越来越少,OSS 用户越来越少,一般文档越来越少
  • 没有 WinForms 和 NHibernate 经验

3) JVM、Java + Jython、Swing、SQLAlchemy
(我在情感上对这个有偏见,但为了完整起见列出)

优点:

  • JVM/Swing 作为跨平台基础运行良好
  • 杰通
  • SQL炼金术
  • 很多开源库

缺点:

  • Swing 看起来很丑而且很难布局
  • 缺乏优秀的 GUI 设计师
  • 我猜我无法避免使用 Java 来处理 UI 方面的事情
  • 不确定 Jython/Java 集成的稳定性

(我已经排除的选项......只是为了避免讨论这些):
- wxWidgets/wxPython(现在 QT 是 LGPLed)
- GTK/PyGTK

最终应用程序的外观和感觉对我来说非常重要。上述技术栈差异很大(PyQT、.NET WinForms、JVM Swing),需要一定的时间才能熟练,所以:

您会推荐哪种替代方案,为什么?

最佳答案

我是 Python 专家,我自己也使用 PyQt,我完全可以推荐它。关于你的缺点:

compilation, distribution and deployment more difficult?

不,不是真的。对于许多项目,完整的 setup.py 例如cx_Freeze 可以不到30行很少需要改的(大部分import依赖会自动检测,只需要指定少数不识别的模块),然后python setup.py 将构建一个独立的可执行文件。然后你可以分发它就像例如一个 C++ .exe。

no QT experience

当我开始使用 Qt 时,我也没有显着的 GUI 经验(只是稍微摆弄了一下 Tkinter),但我逐渐爱上了 Qt。大多数情况下,所有小部件都可以无缝工作并做它们应该做的事情 - 而且有很多小部件用于多种用途。你说出它的名字,可能有一个小部件可以做到这一点,并且不会因为半途而废而惹恼用户。我们被宠坏的所有美好事物都在那里。

Qt 庞大,但 PyQt 文档通过合理的搜索努力回答了大多数问题。如果一切都失败了并且您了解一点 C++,您还可以查看 Qt 资源。

QT Designer not as nice as the Visual Studio Winforms designer

我不了解VS Winforms 设计器,但我必须承认缺少Qt 设计器。我最终在设计器中绘制了 UI 草图,生成代码,清理代码并手工处理所有剩余细节。到目前为止一切正常,但我的项目相当小。


附言:

(now that QT is LGPLed)

PyQt 仍然只是 GPL。 PySide 是 LGPL,是的,但它还没有那么成熟,如果这是一个问题的话。不过,该项目网站指出“现在开始在 PySide 上进行开发应该非常安全”。

关于c# - 用于跨平台应用程序的 Python + QT、Windows Forms 或 Swing?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4145350/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com