![Python跨平台应用软件开发实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/970/49447970/b_49447970.jpg)
1.2 Python界面开发的方法
在应用软件开发时,界面往往是非常重要和庞大的部分,认识到界面的作用和意义,并学会设计界面,是应用软件开发工作中必要的技能。本节来学习一下常用的界面库和开发方法。
1.2.1 理解界面的意义
初学者学习Python编程语言时,往往都是基于控制台进行输出的,比如一个简单的99乘法表:
![](https://epubservercos.yuewen.com/15B506/29013244804517106/epubprivate/OEBPS/Images/24_01.jpg?sign=1738885108-gEjWSaU93nzBGnprjpJ1aaRb0SOoZlJR-0-f90f64254d5990ba9f35ebd65e879920)
运行结果见图1-18。
![](https://epubservercos.yuewen.com/15B506/29013244804517106/epubprivate/OEBPS/Images/24_02.jpg?sign=1738885108-gke4Pbr7umHKqbVSQw6plDFrAKouERZX-0-2109966f42ff253bfae0b0b5130cd55a)
●图1-18 打印99乘法表
在学会了编程的语法后,到实际的应用软件开发时就需要考虑用户体验,进行界面设计,那么界面的作用是什么呢?
界面通过一系列常用窗体和控件,使用户可以对软件进行可视化操作,从而大大方便了开发者对软件的使用。这里以一个PDF文件处理工具软件为例,软件能够提供合并文件和拆分文件的功能,如果仍然使用之前的方式,那么可能会是以下这种形式(见图1-19)。
![](https://epubservercos.yuewen.com/15B506/29013244804517106/epubprivate/OEBPS/Images/24_03.jpg?sign=1738885108-afDdQ7egih9j6ms5eoT60Y8zVpZVxV0P-0-272bbccba2cfe98688dc8b9d874175b7)
●图1-19 命令行模式下的问答式使用流程
而通过界面设计再展现给用户使用,就非常直观了(见图1-20)。
对于一些追求极致运行效率的服务来说,比如网络服务器程序,或者机器学习训练算法,一般是不需要界面的,命令行模式运行效率更高。但是对于大部分应用软件来说,一个美观可用的界面,是应用软件受欢迎的重要原因,本书的所有应用软件开发,也会重点讲解如何进行相应的界面开发。
![](https://epubservercos.yuewen.com/15B506/29013244804517106/epubprivate/OEBPS/Images/25_01.jpg?sign=1738885108-biKlmSS2kCu3nZ80EKynhGhbILxhcCQC-0-ceae19e516007d8dfd0b4fdf64b32c28)
●图1-20 采用图形界面的PDF工具
1.2.2 常用的界面库介绍
想要使用界面开发,首先要了解在Python中有哪些界面库可供使用,一般来说,常用的Python界面库有以下几种。
1.tkinter
历史最悠久的Python GUI工具集,这是Python安装包内置的图形库,属于Python标准库的一部分,它是初学者进行GUI开发的首选,提供了基本完整的界面控件库,在代码层面调取方便,但官方未提供界面设计器。
2.PyQt
PyQt是Python对专业的跨平台GUI工具集Qt的包装,作为一个插件来使用,不但提供了丰富的界面控件库,也提供了功能强大的界面设计器(见图1-21),可以开发美观的界面,跨平台的支持也很好。需要注意的是如果进行商业软件开发,需要付费取得授权。
![](https://epubservercos.yuewen.com/15B506/29013244804517106/epubprivate/OEBPS/Images/25_02.jpg?sign=1738885108-JHtjMcyz1TUagQ9GpxISqwmGPutWOiLs-0-b0cb27e40ba578e8f8cb707612dc068c)
●图1-21 PyQt的界面设计器
3.wxPython
wxPython是Python对跨平台GUI工具集wxWidgets的包装,并提供一个可视化的设计器wxFormBuilder。wxPython作为一个插件具有一定的流行度,老版本的wxPython不支持Python3.x,官方网站是https://wxPython.org/(见图1-22)。
![](https://epubservercos.yuewen.com/15B506/29013244804517106/epubprivate/OEBPS/Images/26_01.jpg?sign=1738885108-AnQX9T3QBa5FdAFsm02FM3YkDLczXd3q-0-abe8e4a16ea96bd7a7afd93b9c2fd431)
●图1-22 wxPython的logo
1.2.3 一个简单的tkinter界面程序
在进行应用软件开发之前,首先可以尝试手动编写一个tkinter界面程序来作为开始,下面用VSCode创建一个Hello.py,在其中编写以下代码。
![](https://epubservercos.yuewen.com/15B506/29013244804517106/epubprivate/OEBPS/Images/26_02.jpg?sign=1738885108-DJbzEPuFAcz8GPLvyDhRWauKhdR0Wr7L-0-661948c8f99db29ee9093c0c9012da1a)
运行效果见图1-23,包括了一个文字标签和两个按钮。
![](https://epubservercos.yuewen.com/15B506/29013244804517106/epubprivate/OEBPS/Images/26_03.jpg?sign=1738885108-KLpcMTBCRmetD96HxpBggimUd3yGqeRs-0-12e9ab0b558a9224367b58f79b7fad9c)
●图1-23 使用tkinter开发的“hello,world!”程序
下面是代码注释。
![](https://epubservercos.yuewen.com/15B506/29013244804517106/epubprivate/OEBPS/Images/27_01.jpg?sign=1738885108-pebiBO7Hi3W1sPHYL55NBFcwLxWQA4BS-0-092e8730debe304cf62e18ca173c1a32)
以上代码展示了一个基本的tkinter界面对话框程序。在进行应用软件开发时,开发者可以选择完全基于代码来编写界面,但是面对较大的工程时,处理界面控件和事件逻辑相关的工作就会变得非常烦琐,这时就需要一个强大的可视化开发工具来辅助设计,才能更好地辅助开发者完成工作任务。表1-3展示了不同开发流程对任务的影响。
表1-3 纯手写代码与工具化开发流程对比
![](https://epubservercos.yuewen.com/15B506/29013244804517106/epubprivate/OEBPS/Images/27_02.jpg?sign=1738885108-0dRB2MgGcp09yHsjTVTneJ1FzSztNKt9-0-cb5b99160b23ceb25553b59bf04f0e2a)
通过对比可以看到工具化开发流程的明显优越性,本书也将基于PyMe开发工具来实现所有的应用案例工程,帮助开发者建立良好的工具化开发流程。