tkinter 介绍
官方用的 GUI 工具包 —— tkinter(IDLE就是用这个开发的)。
tkinter 是 Python 的标准 GUI 库,它实际是建立在 Tk 技术上的。在大多数 Unix 平台以及 Windows 系统上都可用。
作为 python 特定的 GUI 界面,是一个图像的窗口,tkinter 是 python 自带的,可以编辑的 GUI 界面,我们可以用 GUI 实现很多直观的功能,比如想开发一个计算器,如果只是一个键盘输入,输出的黑色窗口,是没用用户体验的。所有开发一个图像化的小窗口,就是必要的。
对于稍有 GUI 编程经验的人来说,Python 的 tkinter 界面库是非常简单的。
Python 开发图形界面的工具有不少,例如 PyQT、pyside、wxpython 等,选择 tkinter 的原因也很多,主要有以下三点。
- 上手简单
- 内置模块,不需下载安装
- 做一些中小项目非常方便
Python 作为一种脚本语言,可以非常灵活。那么在工作中,需要制作一个小工具,需要有界面的,不仅自己用,也能分享别人使用,在这种需求下,Tkinter 是足够胜任的!
tkinter 是 Python 默认的 GUI 库,像 IDLE 就是用 tkinter 设计出来的,因此直接导入 tkinter 模块就可以了:
import tkinter
tkinter 之初体验
接下来从最简单的例子入手:
import tkinter as tk
# 创建一个主窗口,用于容纳整个 GUI 程序
root = tk.Tk()
# 设置主窗口对象的标题栏
root.title("我的第一个 GUI 程序")
# 设置窗口大小
root.geometry('500x300+100+100')
# 添加一个 Label 组件,Label 组件是 GUI 程序中最常用的组件之一。
# Label 组件可以显示文本、图标或者图片
# 在这里我们让它显示指定文本
label = tk.Label(root, text="我的第一个 tkinter 窗口!")
# 然后调用 Label 组件的 pack() 方法,用于自动调节组件自身的尺寸
label.pack()
# 注意,这时候窗口还是不会显示的…
# 除非执行下面这条代码!
root.mainloop()
执行程序,如图所示。
loop 因为是循环的意思,root.mainloop 就会让 root 不断的刷新,如果没有 mainloop ,就是一个静态的 root ,传入进去的值就不会有循环,mainloop 就相当于一个很大的 while 循环,有个 while ,每点击一次就会更新一次,所以我们必须要有循环。 所有的窗口文件都必须有类似的 mainloop 函数,mainloop 是窗口文件的关键的关键。
意思是一旦进入了主事件循环,就由 tkinter 掌管一切了。现在不理解没关系,在后面的学习中你会有深刻的体会。 GUI 程序的开发与以往的开发经验会有截然不同的感受。
封装代码
通常如果要写一个比较大的程序,那么应该先把代码给封装起来。在面向对象的编程语言中,就是封装成函数或者类。看下面进阶版的例子:
import tkinter as tk
def create_button(root):
label = tk.Button(root, text="打招呼!")
label.pack()
return root
root = tk.Tk()
root.geometry('500x300+100+100')
root = create_button(root)
root.mainloop()
程序跑起来后出现一个“打招呼”按钮,如果给案例添加事件,单击它就能从 IDLE 接收到回馈信息。