【编程只是工具】Python实用教程02 Python UI编程

虽然说学习一门语言,通常都是从命令行开始的。因为命令行涉及到的知识点最少,也不需复杂的功能依赖,初学者在命令行程序中很容易掌握各种语言的特性。但是这种相对枯燥乏味的学习方式很容易让人产生挫败感,花费数个小时研究学习后展示在我们眼前的就是冷冰冰的几行数字。所以让我们从 UI 编程开始学习,结合实际例子来快速入门吧。
请在 VS Code 中新建一个.py 文件,输入以下内容。注意从现在开始,程序的输入切勿复制粘贴,自己敲进去代码和复制粘贴感觉是不同的!
import tkinter #引入Tkinter功能模块
root = tkinter.Tk() #实例化一个视窗对象
myLabel = tkinter.Label(root, text="Welcome to python's World") #在视窗对象中实例化一个Label对象
myLabel.pack() #将对象放在窗口中
root.mainloop() # 进入主窗口消息循环
点击运行(F5)后,出现就出现了第一个属于你的 Python 视窗

让我们来详细讲解以下这段代码:
import tkinter #引入Tkinter功能模块
什么叫做引入?什么叫做 Tkinter?
- 引入:顾名思义,就是引用其他人写好的功能集(库)。这个功能有可能是 Python 内置的,也有可能是我们从包管理器下载来的。通过引入,我们就能用一行代码调用前人辛苦写好的功能,快速实现我们自己的需求。
- Python 与包:Python 与包的关系,就如同工程师与设备的关系。今天工程师需要实现制作一个手机,那么我们就调来(引入)一个专门制作手机的机器,我不管这个机器是怎么造出来的,只要机器能生产出我们想要的手机即可。
- 包管理器:接着上面的类比,工程师今天不想造手机了,想直接造人民币。但我们并没有现成的人民币制造机,怎么呢?我们进口一台人民币制造机就可以了。包管理器就是我们去进口机器的地方。——包管理器中存放着数以万计的凝聚力无数人心血的功能包,我们想要调用包管理器中的包时,只需要在命令行中输入“pip install ....(包的名字)“即可。 本例并未使用包管理器,后续我们会接触到。
- Tkinter:Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口。啥意思?就是说这就是一个 Python 中已经内置的专门用来画用户界面的包。
所以说,这行代码乍看起来不明白,说白了就是调用一个用来画用户界面的包。
root = tkinter.Tk() #实例化一个视窗对象
如果你接触过其他编程语言,就会发现这条语句似曾相识却又有所不同。我们先来解释这几个刚看到的名词。
- 对象:简而言之就是具有某些功能和特性的抽象化集合。面向对象的编程思想中,世间万物都可以抽象为对象。所谓“晓看天色暮看云,行也对象,坐也对象“。上述代码中的root,就是我们所需要的视窗对象,而tkinter.TK(),则是生成对象的方法。
- 对象的实例化:其实举一个例子就很好懂。张无忌对对敌光明顶,想要使出一招乾坤大挪移,然而乾坤大挪移并不是一个实实在在的物体,怎么做呢?他按照《九阳神功》的口诀,调用体内真气流转将乾坤大挪移激发出来。这个过程就是实例化。

所以说, tkinter.TK() 就是九阳神功中运转乾坤大挪移的法门,root 则是我们实例化出得乾坤大挪移对象。只有将对象实例化后,我们才能操作他完来成一系列任务。
希望前面的解释能让你能对编程世界中最常用的几个概念有所体会,事实上编程就如同搭积木一样,我们调用不同的积木,采用不同的组合最后实现自己的目的。在工业实践应用中,参与编程的工程师并不需要早早了解多么深刻的编程原理和数据结构,我们能够熟练使用这些积木,搭建出想要的城堡就够了。
此时,视窗对象已经完成了实例化,我们希望这个视窗能够显示一个句子。所以我们要继续实例化出一个标签对象来承接我们的句子。所以我们用到了这样一条语句。
myLabel = tkinter.Label(root, text="Welcome to python's World") #在视窗对象中实例化一个Label对象
myLabel.pack() #将对象放在窗口中
tkinter.Label()就是生成Label对象的方法。而括号中的内容,则是方法的传参
- 方法的传参:不要觉得这么多生词很难理解,其实简而言之,就是我们调用方法的时候,给定一些基本参数,让方法按照我们的设定执行。譬如我们调用了一个 "做饭.鱼香肉丝()"的方法,如果我们想要设定 肉300g,盐20g,在编程语言里就可以写成 “做饭.鱼香肉丝(肉=300,盐=20)“这样的形式。是不是很好理解呢?
- 解释这条语句:为了实例化出一个标签对象,我们采用tkinter.Label()的方法,在这个方法中我们传入两个参数,
- 第一个参数:root。这是告诉这个方法,我们的Label是在root中生成的。
- 第二个参数:test。这是告诉这个方法,我们的Label要显示test中的内容。
- myLable.pack():对象实例化出后还有一个重要步骤,就是让他显示出来,让Label显示出来的的方法是myLabel.pack().
到这里你一定非常迷惑——为啥要这么写?我怎么可能记住这么多方法?
- 为啥要这么写? ——这是tkinter的作者规定的,你按照他的规定写就好了,以后当你自己写方法的时候你也可以很方便的规定他。
- 我怎么可能记住这么多方法? —— “唯手熟尔”,当然装B的说法就是,这些常用的方法很好记的,不信你写几次就知道了。即使记不住也没关系,google以下即可。
root.mainloop() # 进入主窗口消息循环
最后一句也很好理解,就是让我们的视窗对象在运行起来。
希望这篇文章能对你有帮助,如果有任何疑问可以在下方评论区提出。