契子
州的先生学习 Python 是在 2013 年前后,那时候的不仅各种学习资料匮乏,还有 Python2 与 Python3 之间的斗争。
从当年的程序员小众脚本语言,到如今火热的全民编程首选。Python 的生态逐渐丰富。适用于各个场景的第三方库也应接不暇地发布、迭代和完善。
有自己工作和学习需求的人,可能就可以直接拿来提高效率了,但是还是有很多人在掌握了 Python 的基础知识之后,急需一种能够带来及时正向反馈的模块来延续自己的编程之路。
一大部分的人选择通过学习 Python 的图形界面宽框架来让自己的 Python 学习之路显得不那么枯燥,写出来的小玩意儿能够看得见、点得着。让自己写的程序变成一个普通人认知里的程序软件,这带来的及时反馈和成就感可以说会不断激发学习的兴趣。
而在 Python 的生态里,图形界面开发框架说多不多,说少也不少,像主流的就有:
Tkinter
PyQt5
PySide2
WxPython
Kivy
这些框架各有优缺点,比如 Tkinter
是 Python 的内置框架,不需要额外的安装,对 Python 初学者来说,不用愁心各种模块的安装失败,缺点则是组件只能满足基本需求。
而 PyQt5
、PySide2
、WxPython
这些框架则组件丰富、功能强大;
至于 Kivy
,则是一个全平台的图形界面开发框架,上述几个框架只能用于编写桌面图形界面程序,而 Kivy
则可以打包为 Windows、Linux、MacOS、Android、IOS 等全平台的软件。
显然未来还会有更多的 Python 图形界面框架诞生。
面对如此众多的框架,初学者难免会不知所措。生怕学了一个框架,以后却用不着。
州的先生在自己学习 Python 图形界面开发的过程,踩过了很多坑,也吸收了很多的经验。
在此借鉴 13 年看过的一篇文章《5 天学会一种 web 开发框架》,给出一个 5 天学会一种 Python 图形界面框架的经验,希望能给初学者一丝帮助,让其能从繁杂的 API 和文档中解放出来,学会一般逻辑和核心结构,事半功倍地掌握和学习新的框架。
清单
基础篇
基础篇主要涉及一个框架的运行方式,要了解其程序通过哪种方式来运行,其内容包括:
如何运行一个基础的图形界面程序?
如果实现一个主窗口程序的运行?
基础组件篇
在了解了一个图形界面应该如何运行之后,我们就可以在其窗口内添加各种组件了,基础组件是一个任何一个图形界面都包含的模块,比如:
单行文本输入框;
按钮;
文本;
单选框;
多选框;
多行文本输入框;
表格;
列表;
也有一些复合型的组件,比如:
选项卡;
菜单栏;
需要了解:
如何添加一个基本组件到主窗口?
配合“交互篇”了解组件的事件反馈;
布局篇
一个图形界面要美观,其布局至关重要。我们不可能把所有的组件杂乱无章地堆放在主窗口中。需要了解:
框架中有哪几种布局方式?
如何使用某种布局?
如何将组件放置在布局中?
交互篇
交互是所有程序的灵魂,如果没有交互,写得再漂亮的图形界面也仅仅是一个图形界面而言。交互所实现的,是图形界面与工作代码之间的联系。这些交互包括各种组件的点击、输入、显示、隐藏等。
需要了解:
基础的组件都有哪些事件(信号)可以被捕获?
捕获的事件(信号)需要如何进行操作?
性能篇
对于图形界面程序来说,一个程序启动之后就占用了一个进程,如果我们后台有任务需要处理,比如某个按钮点击了之后,需要下载一个几百兆的文件,那么程序的主界面在下载任务执行的过程中就会被阻塞。为了更好的性能,我们需要了解:
如何在框架中使用多线程?
如何在框架中使用多进程?
框架中的多线程、多进程如何进行通信?
高级组件篇(可选)
高级组件表示,这个框架有,那个框架可能没有。比如:
绘图
SQL
浏览器
高级组件可以参照基础组件的点,查看文档了解其特性和使用方式;
样式篇(可选)
所有的图形界面框架都会为组件提供一个基础的样式,但是如果有定制化的需求,这些基础样式可能就满足不了要求。这时候就需要进行样式的调整,需要了解:
框架是否支持自定义样式?
框架支持哪些自定义样式的形式?
如何使用这些自定义样式方法?
打包篇(可选)
程序写好之后,我们还需要将其打包为特定平台上的程序包,比如 Windows 上的 exe、安卓上的 apk 等。需要了解:
框架支持哪些打包方式;
框架支持打包到哪些平台?
最后
其实,使用图形界面框架编写和开发图形界面程序,就像是搭积木。我们先掌握好整体的结构,再根据需要将特定的积木拼接在一起,如果对某块积木的功能不甚了解,那么可以翻阅其说明文档以了解使用。
而非头痛医头、脚痛医脚,盲人摸象般的去使用框架。
按照上述的清单,掌握图形界面框架开发的整体和结构,剩下的,就交给时间和练习吧。
祝大家都能写出好看、强大的图形界面程序。
Python数据分析实例
长按二维码,关注我的公众号