对Python桌面开发的热情特性/TraitsUI的看法

2024-05-19 00:04:57 发布

您现在位置:Python中文网/ 问答频道 /正文

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

文档和热情的支持看起来很有希望,所以我想知道开发人员使用这个堆栈的真实的第一手经验。在

更新:

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

  • SQL数据库是否有任何内置的或附带的项目支持?在
  • 如果有,是否有ORM支持?(我想SqlAlchemy是这里的‘标准’)

Tags: 文档数据库开发人员堆栈报告orm经验桌面
2条回答

免责声明:我是enthough的开发人员和培训师。在

为了回答问题的第二部分,Traits没有任何ORM或数据库支持,所以你必须自己动手。这主要是因为Traits的开发是为了支持科学应用程序开发,而不是企业应用程序开发(这就是Traits支持NumPy的原因)。在

令人遗憾的是,大多数ORM(比如SQLAlchemy、Django的ORM以及Peewee)和Traits都使用声明式的接口和元类来定义对象结构,这使得定义对象结构变得非常容易,但缺点是不能很好地结合在一起。如果您想避免显式的桥接层,那么您需要对Traits和ORM有一个坚实的理解。在

如果我在开发这类应用程序,我可能会避免使用ORM,直接从traits写入DBAPI层,可能为此定义一些自定义的特征类型(例如,Propertytrait工厂,它们的fget和{}执行数据库查询)。在

所有这些都说明了我对enthough技术的偏爱,有一些工具可能更适合将简单的crudui放在数据库之上。一种可能性是Dabo,但还有其他的可能性,比如Camelot。在

作为机械工程的博士后研究员,我首先开始使用TraitsUI和TraitsUI来构建GUI。我以前在构建GUI方面的经验是使用MATLAB的指南,相比之下,我发现TraitsUI非常简单,很容易入门。TraitsUI的进度与努力之间有着非常线性的关系,对于我用它构建GUI的有限数量来说,这已经足够了。在

作为一个专业的开发人员(完全公开:我在enthough工作),我的观点有所改变。首先,区分特征(类型、验证、通知和依赖系统)和TraitsUI(构建在TraitsUI中并基于TraitsUI的GUI层)是很重要的。我一直在使用Traits,它为我写的很多代码打下了基础。特别是对于它的依赖性和通知实用程序,我认为它是非常宝贵的。在

不过,不需要太长时间,就可以开始在应用程序构建方面遇到TraitsUI的局限性。正如我之前提到的,TraitsUI对于中小型应用程序来说已经足够了,但是创建更复杂的布局变得很困难,我们花了大量的时间与TraitsUI进行斗争,以生成更大、更复杂和更灵活的应用程序接口。在

这导致了珐琅或多或少的空白发展。Enaml在其核心使用基于约束的布局系统,并与Traits集成。从一开始,它就解决了路越的布局弱点。我们每个使用过这两种系统的人都喜欢使用Enaml,我们认为它是GUI构建向前发展的首选工具。GUI布局的控制和灵活性是非常显著的在回购中有一些漂亮的演示。在

也就是说,有一个稍微(但只是稍微)陡峭的初始学习曲线,因为从一开始就掌握某些概念(如MVC分离)是有帮助的。一个有经验的开发人员会马上看到它的价值,但对于一个有科学或工程背景的新用户来说,这可能是一个更大的障碍。不过,这只是一个小小的障碍,而且很容易被清除。此外,虽然功能集已接近完成,但仍有一些漏洞。在填补他们有稳定的进展,但珐琅技术上仍处于测试阶段。在

总的来说,如果您要决定学习哪个工具集,我的建议是学习Enaml。这是我们现在和将来将要使用的。在

[更新-2018年1月]

由于这一答案继续得到人们的意见和对话,关于这一观点的更新早就过时了,第一个答案可以追溯到2012年底。Enaml在很大程度上是一个主要开发人员的工作。当他在2013年初离开enhown时,他将enaml存储库分叉,并开始在nucleic/enaml存储库中开发它。我们(热情地)决定不开发竞争性的fork,并引入了一个瘦接口库enthought/traits-enaml,以提供与{}中变化的持续兼容性。同时,我们还引入了enthought/qt_binder,以方便访问Traits/TraitsUI框架中的低级Qt小部件,它提供了与Enaml相同的布局灵活性。在

现在Traits/TraitsUI是我们用来构建大多数应用程序GUI的堆栈。我们继续在Python2和3中维护和开发Traits、TraitsUI和其他的库(Chaco、Kiva、Envisage等),它们继续满足我们的需要,特别是在enthought/envisage可插拔应用程序框架中。在

我的修正建议是,如果你想用Python构建一个富客户机应用程序(而不是web应用程序),我会说学习traitwits和TraitsUI。在

相关问题 更多 >

    热门问题