![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=1738970914-0r9ToZVQTJFfwcRdVNxyElFBwzFkJI8f-0-03cafe604beec89194836ca5a9e1343f)
运行结果见图1-18。
![](https://epubservercos.yuewen.com/15B506/29013244804517106/epubprivate/OEBPS/Images/24_02.jpg?sign=1738970914-MOJKdsufJQCrOWIImw6g2W9oxQv3v768-0-25deb6010dbf25a9404160704a5e42cb)
●图1-18 打印99乘法表
在学会了编程的语法后,到实际的应用软件开发时就需要考虑用户体验,进行界面设计,那么界面的作用是什么呢?
界面通过一系列常用窗体和控件,使用户可以对软件进行可视化操作,从而大大方便了开发者对软件的使用。这里以一个PDF文件处理工具软件为例,软件能够提供合并文件和拆分文件的功能,如果仍然使用之前的方式,那么可能会是以下这种形式(见图1-19)。
![](https://epubservercos.yuewen.com/15B506/29013244804517106/epubprivate/OEBPS/Images/24_03.jpg?sign=1738970914-dL4MxaQshCLAW6dYNh31s2ILMndx377v-0-357a8f684755e660ed81241208ee5194)
●图1-19 命令行模式下的问答式使用流程
而通过界面设计再展现给用户使用,就非常直观了(见图1-20)。
对于一些追求极致运行效率的服务来说,比如网络服务器程序,或者机器学习训练算法,一般是不需要界面的,命令行模式运行效率更高。但是对于大部分应用软件来说,一个美观可用的界面,是应用软件受欢迎的重要原因,本书的所有应用软件开发,也会重点讲解如何进行相应的界面开发。
![](https://epubservercos.yuewen.com/15B506/29013244804517106/epubprivate/OEBPS/Images/25_01.jpg?sign=1738970914-bkSgYcz8BnfoJ5RiAE6NY9FMV9i52tWq-0-6b2613a74fc343839a8dd8dae9be7f0e)
●图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=1738970914-LDxLBhRjPVFT9Uit0AnDVwo4ePKwCKZG-0-84bc990b23fdccf3d0b4fb4efbf30564)
●图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=1738970914-Z0uq1eKERcqIBn2P7dVf3zIIdovhm4eX-0-b8feb697cddeb6d8bd33789249475b20)
●图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=1738970914-8KdDdVlWd2FKSRlFql9rJ1Hj1t6Yhanq-0-78c056a7a8697900049789eef7e20c69)
运行效果见图1-23,包括了一个文字标签和两个按钮。
![](https://epubservercos.yuewen.com/15B506/29013244804517106/epubprivate/OEBPS/Images/26_03.jpg?sign=1738970914-zwxfSBcY7ND4AeOUgfb0pbKX6zDQaphA-0-03963a34840fef79050676f2dde5682e)
●图1-23 使用tkinter开发的“hello,world!”程序
下面是代码注释。
![](https://epubservercos.yuewen.com/15B506/29013244804517106/epubprivate/OEBPS/Images/27_01.jpg?sign=1738970914-fUM7pruplp7ouREb4uCc33wEtlbcuWa0-0-b173b498feb3ed562004323ec08c9a11)
以上代码展示了一个基本的tkinter界面对话框程序。在进行应用软件开发时,开发者可以选择完全基于代码来编写界面,但是面对较大的工程时,处理界面控件和事件逻辑相关的工作就会变得非常烦琐,这时就需要一个强大的可视化开发工具来辅助设计,才能更好地辅助开发者完成工作任务。表1-3展示了不同开发流程对任务的影响。
表1-3 纯手写代码与工具化开发流程对比
![](https://epubservercos.yuewen.com/15B506/29013244804517106/epubprivate/OEBPS/Images/27_02.jpg?sign=1738970914-jflxKFl7nfLxYaEDg51l4I3rC3JpKgqA-0-2d697ee005fb2f53f8ae0f70e837cc4d)
通过对比可以看到工具化开发流程的明显优越性,本书也将基于PyMe开发工具来实现所有的应用案例工程,帮助开发者建立良好的工具化开发流程。