19.1 简介

19.1.1 什么是Tcl、Tk和Tkinter

Tkinter是Python的默认GUI库,它基于Tk工具集,后者最初是为工具命令语言(Tcl)设计的。Tk流行后被移植到许多其他脚本语言中,包括Perl(Perl/Tk)、Ruby(Ruby/Tk)和Python (Tkinter)。借助于Tk开发GUI的可移植性和灵活性,加上脚本语言的简洁和系统语言的强劲,我们得到了一件可与商业软件相匹敌的利器,它可以用于快速开发各种GUI程序。

如果是初涉GUI编程,你会惊喜地发现一切竟如此简单。你也会发现Python搭配Tkinter提供了一种高效的、激动人心的应用程序构建方式,可以用来开发出有趣(并且往往还有用)的程序。而同样的程序如果直接使用C/C++,基于本地窗口系统库开发,将多花很长的时间。一旦设计好了程序及相应外观,接下来要做的只是用那些被称作组件的基本构造块去搭建想要的模块,最终再赋予其功能就能让一切“活起来”。

如果你是个Tk老手,不论是使用过Tcl还是Perl,都会发现Python提供了一种进行GUI编程的全新方式。Python基于Tk提供了一种更高效的快速原型系统用以创建应用。别忘了你同时还享有Python的系统访问、网络操作、XML、数字可视化、数据库访问、以及所有其他标准库和第三方模块。

一旦你在自己的系统中装好了Tkinter,用不了15分钟就可以让你的第一个GUI程序运行起来!

19.1.2 安装和使用Tkinter

类似于线程模块,你系统中的Tkinter未必是默认开启的。你可以通过尝试导入Tkinter模块来判断它是否能被Python解释器使用。如果Tkinter是可用的,不会出现任何错误:

19.1 简介 - 图1

而如果你的Python解释器在编译时没有启用Tkinter,导入过程将失败。

19.1 简介 - 图2

这时你不得不重编译Python解释器来访问Tkinter。这通常会涉及编辑Modules/Setup文件和启用所有正确选项来编译你的Python解释器,以确保Tkinter能被选择安装在系统中。请检查你Python发行包中的README文件,里面有把Tkinter编译进系统的操作说明。请确定你编译完后启动的是刚刚创建的新Python解释器,否则它会像那个旧的不含Tkinter的解释器一样工作(实际上,它就是你那个旧解释器)。

19.1.3 客户端/服务器架构

在之前介绍的网络编程中,我们介绍了客户端/服务器计算模式的概念。窗口系统就是软件服务器的另一个例子,它们运行在一个有显示设备的机器上,比如带有一个某种类型的显示器。当然还有客户端(那些需要窗口环境来运行的程序,也就是我们所说的GUI程序),这些程序无法脱离窗口系统单独运行。

这种架构混合网络应用将显得更加有趣。通常一个GUI程序被执行时会在启动它的机器上显示(通过窗口服务器),但也可以在一些网络化的窗口环境中(例如Unix的X Window系统)选择其他机器的窗口服务器去显示。这样,你就可以在一台机器上运行GUI程序而在另一台机器上显示它!