9.GUI界面开发(tkinter)

一、前言

使用python最舒服的地方就在于,它内部有大量的库可供我们直接使用,而且使用起来还相当的方便。

前面章节我们一直围绕的都是基本语法的讲解,到目前为止,python大部分的基础语法我们就已经学习完了,已经完全可以开始写软件了。

所以从本章开始,就要开始带大家了解超脱语言本身的知识点,并学会如何使用python,通过大量好用的库,来完全一些看起来很麻烦的任务。

二、GUI与CLI对比

GUIGraphical User Interface(图形用户界面)的缩写,也就是我们平常电脑、手机上看到的各种软件界面,比如qq、微信等等。

而与之相对的就是CLI,是Command Line Interface(命令行接口)的简写,也就是到目前为止我们一直看到的输出字符的命令行窗口(也称终端)。

两者的区别非常明显,GUI适用于给那些对编程并不了解的人使用,它的编写会更加的复杂,使用起来会更加的简单,可以通过鼠标进行操作。

CLI则更适用于给专业的人使用,你只能通过敲击字符来控制程序,编写起来更加的简单,但使用起来更加麻烦,甚至很多时候你还需要有相关的专业知识才行。

三、GUI原理

在正式写GUI程序前,了解它的原理是很有必要的,否则你写完代码依旧迷迷糊糊不知缘由,一旦出错,很难找到问题所在。

如果你了解C/C++,那么可以参考另外一篇文章学习如何从零制作一个自己的窗口:windows编程入门

从前面的编程中我们已经看到了,程序的执行流程就是从开始到结束,顺序执行下来的,所以你想要让一个程序一直运行起来,那就只能使用循环:

cmd = input('输入命令:')
while cmd != 'exit':
    print(f'你输入的命令为:{cmd}')
    cmd = input('输入命令:')

print('程序退出!')

结果为:

image-20240310081644034

这就是一个最简单的CLI程序,你可以通过用户输入的不同命令,来执行不同的代码就行了。

GUI程序虽然复杂一点,但本质上却同样如此:

  1. 运行程序、进入循环
  2. 等待用户的鼠标、键盘消息
  3. 处理鼠标键盘消息

这就是一个GUI程序的基本运行流程,它有一个非常重要的概念:消息

这个消息就是当你鼠标移动的时候、当你键盘敲击的时候,你的电脑系统就会自动触发,并将这个消息发送给你这个GUI程序中,然后你处理这个消息就行了!

就是这么的简单!

如果是C/C++语言,这一过程并不简单,因为消息纷繁复杂,但这是在python语言中,我们了解到这里就已经足够了

一个GUI程序的大概流程为:

  1. 初始化界面(提前布局好我们的界面)
  2. 进入消息循环(一般GUI库会提供这样一个函数,然后程序运行到此就会卡住,等待系统不断发送消息过来)
  3. 处理发送来的消息

GUI库有很多,原理都是如此(这是因为操作系统底层就是这么干的),而本文所要介绍的是python自带的GUI库:tkinter

如果觉得自带的不好用,当然你也可以去使用其它第三方的GUI库,都是可以的,这在python中非常简单,后面章节我会再进行介绍。

注意:如果你安装python的时候是自定义安装,没有勾选td/tk and IDLE这个组件,那么请重新安装、并勾选上该组件。

因为它就是我们本文要用到的tkinter模块。

四、tkinter基本使用

1.主窗口

其官方教程可以点击这里查看。

一个最简单的GUI程序代码如下:

from tkinter import Tk

window = Tk()

window.mainloop()

实际上就只有两行代码:

  • Tk():通过该模块下的这个函数生成一个窗口实例对象
  • 调用窗口的mainloop函数,进入消息循环

是不是非常的简单!

image-20240310082130060

这个函数(类的初始化函数)有很多参数,但大多数情况下,你应该都用不上他们,而且这会涉及到很多底层的内容,避免加重学习负担,所以这里也不再过多介绍。

首先第一步肯定就是调整这个窗口的名称、大小、位置。

window = Tk()