分享
 
 
 

Python anygui 项目预览

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

在 Python 世界中有一个非常有趣的 [anygui] 项目,它已经进入了早期的开发阶段。[anygui] 项目打算作为许多主要图形工具箱的下层 API。一旦完全开发成功,Python 程序员就可以调用一个公共 [anygui] 函数 ― 例如,为创建一个窗口 ― 可由“最适当好用”的工具箱来完成这项工作。在 Windows 上,可以使用到 Win32 API(或者 wxWindows);在 MacOS 上,可能本机调用;在 BeOS 上,使用 Bethon;在 Linux 上,使用 TKinter 或者 GTK;在 Telnet 屏幕上使用 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 库。

许多人都表示他们期望有标准的 Python GUI。 Tkinter 恰在这时到来 ― 它有 Windows 和 UNIX/X Window 系统稳定的版本,并且有一个过得去的 MacOS 版本。但您还需要在系统上安装 TCL 和 TK,以及被忽略的“非主流”平台,如 BeOS 和 OS/2。各类倡导者建议,采用一些其它库/绑定将会是一个更好的选择(有许多库可以进行选择;请参阅 参考资料)。而每个库/绑定支持一个期望平台的子集;并且最重要的是,没有一个库/绑定被一致地接受(因此,没有一个成为标准而随 Python 分发版一起发行)。我们无法编写带用户界面的应用程序,并且无法确保实际 用户可以与它进行相互操作。

重新考虑这个问题

Java 思想创建了每个 JVM 必须实现的能力的一个标准集合。Java GUI 是根据规定而存在。Python 式的方法可能来自一个不同的角度。不再命令每台机器遵从某个确定的 API,取而代之的是,只是确定给定机器 可以做什么,然后从那里开始工作。API 仅作为底层平台所完成工作的包装器。

一旦以 Python 方式考虑问题时, anygui 做了您确实希望做的事情。从 anydbm 模块中取出它的名字和相关说明,在运行时找到“最适当可用”的数据库后端, anygui 在自身应用程序正在运行的系统上会找到最适当可用的 GUI 后端。 anygui 强调提供一个可以和每个后端一起工作的 实用的界面元素集合;特定的后端可能自己能够提供更高级的界面,但 anygui 提供的是它们的公共的界面。

写本文的时候, anygui 还是一个 alpha 级的项目。对一个目标后端子集, anygui 已经做得非常好。但由于目标是建立一个(接近于)通用的包装器,只有一个子集在工作显然是不够的。最终,假如 anygui 达到了它的目标,则在每个 Python 分发版中, anygui 都将作为标准的 Python 包包含在其中,那才是有意义的(就如同不管什么依靠于系统的后端,Python 分发版中都包括了 anydbm 或者 XML.sax )。究竟,这一点才能确保每个用户都拥有了它。顺便提一下, anygui 是纯 Python;它本身不需要 C/C++ 或者其他较低级语言的任何东西(当然,假如有用, anygui 应该找一些支持的 GUI 库)。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有