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