首页 文章

问题re:使用Python进行GUI编程的当前状态

提问于
浏览
21

我最近做了一些修改使用wxPython小部件的Python gui应用程序的工作 . 我在过去的六七年中尝试过Python,但是这是我第一次用gui做任何工作 . 我对使用Python的gui编程的当前状态感到非常失望 . 我非常喜欢Python语言本身,这是我习惯的Delphi / ObjectPascal编程的一个有趣变化,对于通用编程任务来说肯定是一个很大的 生产环境 力提升 . 我想转向Python一切 .

但是wxPython是Delphi的VCL或.NET的WinForms之后的一大步 . 虽然Python本身通过编程更高级别的抽象提供了良好的 生产环境 力增益,但wxPython的使用方式比VCL更低的抽象级别 . 例如,我浪费了很多时间试图让wxPython列表对象按照我想要的方式运行 . 只是添加可排序的列涉及几个代码密集的步骤,一个用于创建和维护提供实际排序顺序的阴影数据结构,另一个用于在列 Headers 中显示图形排序方向三角形,以及还有一些我不记得了 . 所有这些容易出错的步骤都可以通过使用我的Delphi网格组件设置属性值来完成 .

我的结论是:虽然Python通过提高许多通用编码的抽象级别来提高 生产环境 率,但wxPython的几个抽象级别比Delphi的gui工具要低 . 最终结果:使用Delphi进行gui编程比使用Python进行gui编程要快得多,而得到的带有Delphi的ui仍然更加精致和功能齐全 . 它并没有夸大地说,Delphi gui编程在1995年比使用wxPython的python gui编程在2009年更先进 .

我做了一些其他python gui框架的调查,并没有解决我对wxPython的主要抱怨,这只是因为它具有较少的功能,并且通常要求你以比我更低的抽象级别进行gui编程 . 一些快速调查建议的python gui-dev解决方案(http://wiki.python.org/moin/GuiProgramming)对于习惯使用Delphi或.NET的人来说实在有些令人沮丧 .

最后,我有几个问题 .

首先,我错过了什么吗?是否有一些Python的gui开发解决方案可以与VCL或WinForms编程进行比较?我不一定关心它是否不适合德尔福的VCL . 我只是在找同一个联盟的东西 .

第二,IronPython可以成为前进的方向吗?我大多试图避免喝.NET koolaid,但也许IronPython给了我一个最终让步的理由 . 即便如此,IronPython是否与WinForms完全集成,或者我需要让表单本身由c#或vb支持 . 净?在我看来,SharpDevelop和MonoDevelop肯定就是这种情况(即,IronPython不能用于设计时间的gui构建) . VS.NET是否将IronPython与gui-building完全集成?

在我看来,Python就像"take over the world"在某种程度上类似于Visual Basic在1990年初所做的那种方式's, if some wonderful new gui-building solution came out for Python. Only this time with Python we'd有一个全新的快速,跨平台和开源gui编程范例 . 不会像VB曾经那样创造同样的革命 . 但我不喜欢一个漂亮的现代,开源,高级解决方案 .

9 回答

  • 12

    dabo将wxPython编程放在更高级别,就像你正在寻找的那样 .

  • 3

    简短的回答:不要试试Tkinter - 它有上面提到的所有问题 .

    答案很长:Tkinter对大型程序没用 . 用它来处理各种碎片总会退化为杂耍(从来没有发生过),结果输出看起来不是原生的或特别抛光的 .

  • 3

    你是对的,wxPython可以定义得到改进 . 但我认为Robin Dunn到目前为止做得很好,现在仍然如此 .

    特别是wxPython社区可以进行改进,比如最近包含了Andrea的小部件,所以像许多社区项目一样选择你最喜欢的那个,并在使用它时进行改进 .

  • 2

    我们很高兴使用Python.Net在WinForms中构建我们的UI并使用CPython for Presenter,Model . 如果你想在Windows上做python,IronPython也是一个很好的工具 .

  • 0

    您可能不得不使用.net或java pythons,但请先检查一下,看看它是否符合您的要求:

    Kiwi

  • 0

    PyQt是对诺基亚的Qt SDK的绑定,而PyQt本身是由一家名为RiverBank的公司提供的 .

    如果许可证对您不重要,您可以使用GPL下的PyQt,或者您将支付一些钱用于商业许可 .

    PyQt现在正在绑定Qt 4.4 .

    Qt不只是GUI,它是一个完整的C / C SDK,可以帮助网络,xml,媒体,数据库和其他东西,以及PyQt将所有这些转移到python .

    使用PyQt,您将使用Qt Designer,并通过简单的命令行将.ui文件传输到.py文件 .

    您将在网上找到许多关于PyQt的资源以及来自不同社区的良好支持,甚至还有关于PyQt的书籍 .

    许多建议认为RiverBank别无选择,只能发布下一个依赖于LGPL下的Qt 4.5的版本,我们正在等待:) .

    另一个解决方案是使用Java Swing的Jython,非常容易和优雅地编写(特别是在JDK 6下),但在Internet上没有足够的资源 .

  • 5

    您可能希望查看Jython(Java VM上的Python) . 它与Iron Python非常相似,你可以去.Net koolaid .

  • 0

    似乎你的抱怨是关于wxPython,而不是关于Python本身 . 试试pyQt(还是qtPython?)

    但是,wxPython和pyQt都只是对C / C(分别)库的Python绑定,它与原始(在概念上)一样低 .

    但是,Qt远远优于wx

  • 2

    Wax,其目的是为wxWidgets创建一个更加pythonic的接口,但它的发展似乎停滞不前 .

相关问题