我正在寻找有关将Traits/TraitsUI/enaml用于Python桌面开发的意见和经验。

文档和Enthought支持看起来很有希望,因此我想了解使用此堆栈的开发人员的真实第一手经验。

更新:

我主要的兴趣点是迁移旧的几个桌面数据库
应用程序:CRUD/查询/报告。那我很特别
对数据访问层感兴趣:现在,我正在使用PosgtreSQL和
peewee(一种简约的ORM):

  • 是否有对SQL数据库的内置或辅助项目支持?
  • 如果是,是否有ORM支持? (我认为SqlAlchemy在这里是“标准”)
  • 最佳答案

    作为机械工程的博士后研究员,我首先开始使用Traits和TraitsUI构建GUI。我以前在构建GUI方面的经验是在MATLAB的GUIDE上进行的,而我发现TraitsUI非常简单明了,并且比较起来容易上手。 TraitsUI的进度与工作量呈线性关系,对于我使用的有限数量的GUI构建来说,这已经绰绰有余了。

    作为一名专业开发人员(全面披露:我在Enthought工作),我的观点有所改变。首先,重要的是要区分Traits(类型,验证,通知和依赖系统)和TraitsUI(内置于Traits并基于Traits的GUI层)。我一直都在使用Traits,它掩盖了我编写的许多代码。特别是对于它的依赖项和通知实用程序,我认为它是无价的。

    但是,花很短的时间就可以开始突破TraitsUI的应用程序构建限制。如前所述,TraitsUI足以满足中小型应用程序的需求,但是创建更复杂的布局变得困难,并且我们花费大量时间与TraitsUI进行角力,以生成更大,更复杂且更灵活的应用程序界面。

    这导致了Enaml或多或少的空白板开发。 Enaml的核心使用基于约束的布局系统,并与Traits集成。从一开始,它就解决了TraitsUI的布局缺陷。我们每个使用这两种系统的人都更喜欢Enaml,我们认为它是GUI构建向前发展的首选工具。布局GUI的控制水平和灵活性非常出色-在存储库中可以查看一些漂亮的演示。

    就是说,初始学习曲线略微(但仅略微)陡峭,因为从一开始就掌握某些概念(例如MVC分离)会有所帮助。经验丰富的开发人员会立即看到此值,但是对于具有科学或工程背景的新用户而言,这可能更是一个障碍。但是,这只是一个小障碍,并且很容易解决。此外,虽然功能集已接近完成,但仍然存在一些漏洞。填充它们方面已经取得了稳步的进展,但是Enaml从技术上来说仍处于测试阶段。

    总体而言,如果您要决定学习哪种工具集,我的建议是学习Enaml。这就是我们现在将要使用的东西。

    [更新-2018年1月]

    由于此答案继续获得人们的看法并引发了对话,因此自从逾期以来就一直对此意见进行更新,最早的答案可以追溯到2012年末。Enaml在很大程度上是一个主要开发人员的工作。当他于2013年初离开Enthought时,他 fork 了enaml存储库,并开始在nucleic/enaml存储库中进行开发。我们(认为)决定不开发竞争的fork,并引入了瘦接口(interface)库enthought/traits-enaml来提供与nucleic/enaml更改的持续兼容性。大约在同一时间,我们还引入了enthought/qt_binder,以方便地访问Traits/TraitsUI框架中的低级Qt小部件,该框架提供了与Enaml提供的大多数布局灵活性。

    现在,Traits/TraitsUI是我们用于大多数应用程序GUI构建的堆栈。我们将继续使用Python 2和3维护和开发Enthought工具套件中的Traits,TraitsUI和其他库(Chaco,Kiva,Envisage等),它们将继续满足我们的需求,尤其是在enthought/envisage可插拔应用程序框架中。

    我的修订建议是,如果您想用Python构建富客户端应用程序(即不是Web应用程序),我会说要学习Traits和TraitsUI。

    关于python - 关于Python桌面开发的Enthought Traits/TraitsUI的观点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14058555/

    10-10 18:34