如果程序员写的程序是自用的,那么用户界面是怎样的并不重要,因为程序员完全了解 程序的行为,能够以最直接的方式来控制程序的运行。但实际上程序员往往是在为其他用户 写应用程序,而用户并不了解程序的内部行为,甚至对计算机技术也可能只是一知半解,因 此程序员必须为应用程序设计用户友好的(user friendly)界面,以便用户能很好地与应用程 序交互。所谓“用户友好”并没有严格的定义,大体指界面易学易记,用户能够高效率地与 计算机进行交互,交互过程中不易犯错,即使犯错也容易恢复。

    在本章之前,我们写的程序都是所谓控制台程序,这种程序一般只提供命令行界面(Command Line Interface,简称 CLI),即用户通过键盘输入文本数据或文本命令来控制程序 的行为,而程序向用户显示的也都是文本信息。

    与命令行界面不同,图形用户界面(Graphical User Interface,简称 GUI①)提供图形化 界面来实现程序与用户的交互。在 GUI 中,用户通过直接操作窗口、菜单、按钮等图形元素 来向程序发出命令或输入数据,而程序通过消息框、对话框等图形元素来向用户显示信息。 由于图形界面非常直观、易理解,所以 GUI 使得只具有一点基本计算机技能的用户也能顺利 地与计算机打交道。

    8.1.1 程序的用户界面 - 图2

    图 8.1 Python 解释器的两种用户界面

    通过操作系统的演化史也可以清楚地了解两种界面的优劣。操作系统是计算机上最重要 的系统软件,用户通过操作系统提供的命令来使用计算机。早期的计算机都使用命令行界面 的操作系统,典型的如 DOS 和 UNIX。用过 DOS 的人都知道,为了让计算机做事情,需要 记忆很多 DOS 命令。例如为了将文件 myfile.txt 从 d:\拷贝到 d:\mydir 目录中,需要输入如下 命令:

    为了让计算机更加易用,后来人们发明了图形界面的操作系统,典型的如 Microsoft Windows 和 X Window。在 Windows 中要想做上面这条 DOS 命令所做的事情,根本不需要键 盘,只需用鼠标点击几下进行复制粘贴,甚至直接拖动文件到新的文件夹即可。自从有了 Windows,今天的计算机用户可能都不知道曾经有 DOS 这样的东西了。

    总之,GUI 能够大大增强程序的用户友好性,提高用户使用计算机的效率,因此是程序 设计中的重要技术。