
1.2 Python界面开发的方法
在应用软件开发时,界面往往是非常重要和庞大的部分,认识到界面的作用和意义,并学会设计界面,是应用软件开发工作中必要的技能。本节来学习一下常用的界面库和开发方法。
1.2.1 理解界面的意义
初学者学习Python编程语言时,往往都是基于控制台进行输出的,比如一个简单的99乘法表:

运行结果见图1-18。

●图1-18 打印99乘法表
在学会了编程的语法后,到实际的应用软件开发时就需要考虑用户体验,进行界面设计,那么界面的作用是什么呢?
界面通过一系列常用窗体和控件,使用户可以对软件进行可视化操作,从而大大方便了开发者对软件的使用。这里以一个PDF文件处理工具软件为例,软件能够提供合并文件和拆分文件的功能,如果仍然使用之前的方式,那么可能会是以下这种形式(见图1-19)。

●图1-19 命令行模式下的问答式使用流程
而通过界面设计再展现给用户使用,就非常直观了(见图1-20)。
对于一些追求极致运行效率的服务来说,比如网络服务器程序,或者机器学习训练算法,一般是不需要界面的,命令行模式运行效率更高。但是对于大部分应用软件来说,一个美观可用的界面,是应用软件受欢迎的重要原因,本书的所有应用软件开发,也会重点讲解如何进行相应的界面开发。

●图1-20 采用图形界面的PDF工具
1.2.2 常用的界面库介绍
想要使用界面开发,首先要了解在Python中有哪些界面库可供使用,一般来说,常用的Python界面库有以下几种。
1.tkinter
历史最悠久的Python GUI工具集,这是Python安装包内置的图形库,属于Python标准库的一部分,它是初学者进行GUI开发的首选,提供了基本完整的界面控件库,在代码层面调取方便,但官方未提供界面设计器。
2.PyQt
PyQt是Python对专业的跨平台GUI工具集Qt的包装,作为一个插件来使用,不但提供了丰富的界面控件库,也提供了功能强大的界面设计器(见图1-21),可以开发美观的界面,跨平台的支持也很好。需要注意的是如果进行商业软件开发,需要付费取得授权。

●图1-21 PyQt的界面设计器
3.wxPython
wxPython是Python对跨平台GUI工具集wxWidgets的包装,并提供一个可视化的设计器wxFormBuilder。wxPython作为一个插件具有一定的流行度,老版本的wxPython不支持Python3.x,官方网站是https://wxPython.org/(见图1-22)。

●图1-22 wxPython的logo
1.2.3 一个简单的tkinter界面程序
在进行应用软件开发之前,首先可以尝试手动编写一个tkinter界面程序来作为开始,下面用VSCode创建一个Hello.py,在其中编写以下代码。

运行效果见图1-23,包括了一个文字标签和两个按钮。

●图1-23 使用tkinter开发的“hello,world!”程序
下面是代码注释。

以上代码展示了一个基本的tkinter界面对话框程序。在进行应用软件开发时,开发者可以选择完全基于代码来编写界面,但是面对较大的工程时,处理界面控件和事件逻辑相关的工作就会变得非常烦琐,这时就需要一个强大的可视化开发工具来辅助设计,才能更好地辅助开发者完成工作任务。表1-3展示了不同开发流程对任务的影响。
表1-3 纯手写代码与工具化开发流程对比

通过对比可以看到工具化开发流程的明显优越性,本书也将基于PyMe开发工具来实现所有的应用案例工程,帮助开发者建立良好的工具化开发流程。