文档介绍:·简明Python教程--介绍·简明Python教程--安装Python·简明Python教程--最初的步骤·简明Python教程--基本概念·简明Python教程--运算符与表达式·简明Python教程--控制流·简明Python教程--函数·简明Python教程--模块·简明Python教程--数据结构·Python教程--编写Python脚本·Python教程--面向对象的编程·简明Python教程--输入/输出·简明Python教程--异常·简明Python教程--Python标准库·简明Python教程--术语表Pythonanygui项目预览在Python世界中有一个非常有趣的[anygui]项目,它已经进入了早期的开发阶段。[anygui]项目打算作为许多主要图形工具箱的下层API。一旦完全开发成功,Python程序员就可以调用一个公共[anygui]函数―例如,为创建一个窗口―可由“最适当好用”的工具箱来完成这项工作。在Windows上,可以使用到Win32API(或者wxWindows);在MacOS上,可能本机调用;在BeOS上,使用Bethon;在Linux上,使用TKinter或者GTK;屏幕上使用ncurses―所有这些都取决于给定的机器上安装的和可用的软件。本文讨论了[anygui]当前的开发状态,以及该项目要达到的目标。编写一次,到处显示! 许多年前当Java刚出现时,它的一个重要承诺就是实现代码“编写一次,随处运行”的想法。起先,主要考虑将Java用户界面作为applet,嵌入到Web浏览器中。一段时间后,独立的AWT应用程序成为更流行的概念。接下来,AWT通常被Swing所取代。Swing又变成了Bean(构建在Swing上,但有另外的要求)。这样依次下来,Swing类从Java版本中添加、删减,不断来回变化着。有关Java的一个很流行的笑话是,“编写一次,到处调试”。至少可以确定的是,您不可能编写了一个Java应用程序后,非常自信地认为它可以运行在您应用程序的每个用户机器上―除非您愿意要求每个用户做相当多的工作来获取Java版本和配置,使它们完全符合您特定的应用程序。应用程序是否运行取决于Java版本,以及甚至特定的供应商和安装Java虚拟机(JVM)的平台。就大多数方面而言,如Python、Perl和Tcl这样的脚本语言,要比Java具有更好的可移植性。例如,对于大多数Python脚本,程序员感到十分自信的是,发送到多个用户的脚本在每台目标机器上都将正确和完全一致地运行(可能有最低版本的要求―这要比Java上的要求简单得多、可靠得多)。当然,Java除了不完美的移植性外,它也有许多优势:静态输入(许多人想要它)、庞大的类库、卓越的文档、细心的设计选择。但是有关那些语言的注意事项并不是我在这里感兴趣的话题。 Python脚本可移植性中有一个地方比Java差很多,那就是在用户界面中。对于一个命令行工具,这一点不成问题。但当您希望复杂的用户交互时―特别专门针对图形界面时―Python实际上什么也不能提供。对于所有的小故障和小错误,Java通常确实为每个带JVM的平台提供了Swing和AWT这些基本的GUI。相反,Python完全没有任何“标准”的GUI库。许多人都表示他们期望有标准的PythonGUI。Tkinter恰在这时到来―它有Windows和UNIX/XWindow系统稳定的版本,并且有一个过得去的MacOS版本。但您还需要在系统上安装TCL和TK,以及被忽略的“非主流”平台,如BeOS和OS/2。各类倡导者建议,采用一些其它库/绑定将会是一个更好的选择(有许多库可以进行选择;请参阅参考资料)。而每个库/绑定支持一个期望平台的子集;并且最重要的是,没有一个库/绑定被一致地接受(因此,没有一个成为标准而随Python分发版一起发行)。我们无法编写带用户界面的应用程序,并且无法确保实际用户可以与它进行相互操作。重新考虑这个问题 Java思想创建了每个JVM必须实现的能力的一个标准集合。JavaGUI是根据规定而存在。Python式的方法可能来自一个不同的角度。不再命令每台机器遵从某个确定的API,取而代之的是,只是确定给定机器可以做什么,然后从那里开始工作。API仅作为底层平台所完成工作的包装器。一旦以Python方式考虑问题时,anygui做了您确实希望做的事情。从anydbm模块中取出它的名字和相关说明,在运行时找到“最适当可用”的数据库后端,anygui在自身应用程序正在运行的系统上会找到最适当可用的GUI后端。anygui强调提供一个可以和每个后端一起工作的实用的界面元素集合;特定的后端可能自己能够提供更高级的界面,但anygui提供的是它们的公共的界面。写本文的时候,anygui还