Python青少年简明教程:tkinter库入门
tkinter是Python的标准GUI(图形用户界面)库。它提供了一种快速而简单的方法来创建GUI应用程序。tkinter是Python自带的,无需额外安装,随 Python 安装包一起提供。
在Python 3.x中,库名称是tkinter, 跨平台——在 Windows、macOS 和 Linux 上都可以使用,使得用 Tkinter 编写的程序可以在不同操作系统上运行。
tkinter基于事件驱动编程模型,它提供了一组小部件(如按钮、标签、文本框等)和几何管理器(如pack、grid、place)来组织用户界面,适合构建简单的桌面应用程序。
基本概念
窗口(Window):Tkinter应用程序的基本组件之一,表示一个包含菜单栏、工具栏、状态栏以及主体区域的窗口。窗口可以通过Tk()或Toplevel()方法创建,其中Tk()方法创建的是应用程序的主窗口,而Toplevel()方法创建的是一个独立的子窗口。
tkinter的窗口可以通过Tk()或Toplevel()方法创建,两者区别:
Tk() 用于创建应用程序的主窗口——用于创建应用程序的主界面。这是应用程序的根窗口。通常每个应用程序只有一个Tk()实例。关闭Tk()窗口会结束整个应用程序,所有Toplevel窗口也会销毁。Tk()包含主事件循环(mainloop())。
Toplevel()用于创建子窗口或额外的窗口——常用于创建对话框、额外的信息窗口或功能窗口。通常需要一个父窗口作为参数(通常是Tk()实例或另一个Toplevel()实例)。可以创建多个Toplevel()窗口。关闭Toplevel()窗口只会关闭该特定窗口,不会影响主窗口或其他Toplevel窗口。Toplevel()不包含自己的事件循环,依赖于Tk()的主事件循环。
示例:
# Tkinter中的Tk()和Toplevel()创建的窗口区别演示
import tkinter as tk
# 使用Tk()创建主窗口
root = tk.Tk()
root.title("主窗口 (Tk)")
root.geometry("300x200")
# 创建一个按钮来打开Toplevel窗口
def open_toplevel():
# 使用Toplevel()创建子窗口
top = tk.Toplevel(root)
top.title("子窗口 (Toplevel)")
top.geometry("250x150")
tk.Label(top, text="这是一个Toplevel窗口").pack(pady=20)
tk.Button(root, text="打开Toplevel窗口", command=open_toplevel).pack(pady=50)
tk.Label(root, text="这是主Tk窗口").pack()
root.mainloop()
你可以运行之:
对 Tkinter 的支持分布在多个模块中。 大多数应用程序将需要主模块 tkinter(也称为tk)和tkinter.ttk,也称为 ttk(themed tk),后者从tkinter 8.5开始可用。ttk组件多于tkinter,界面也相对漂亮,所以使用时尽量选择ttk。按照以下方式导入,ttk中的widget(组件、小部件、控件)会默认替换掉tk的。
import tkinter as tk
from tkinter import ttk
大多数应用程序都需要同时使用这两个模块。一些常见的小部件在 tk 和 ttk 中都有实现,但 ttk 版本通常更为现代。
ttk(themed tk)是对基本 tkinter 的增强:
提供了更多的组件;
界面相对更现代和美观;
支持主题,使应用程序在不同平台上具有一致的外观。
特别提示,tkinte文档中使用的widgets,在许多不同的翻译:组件、小部件、控件,一般译为小部件,相当于某些开发语言的Components(组件)、controls(控件)。这些术语可以互换使用,但在 tkinter 上下文中,“小部件”或“控件”可能更为常见。
ttk 和 tkinter (tk) 共有的和各自独有的小部件 (widgets)
一些常见的小部件在 tk 和 ttk 中都有实现,但 ttk 版本通常更为现代。
ttk 和 tkinter 都提供了以下基本小部件:
Button(按钮)
Label(标签)
Entry(输入框)
Frame(框架)
Checkbutton(复选框)
Radiobutton(单选按钮)
Scale(滑块)
Scrollbar(滚动条)
tkinter (tk) 独有的小部件:
Menu(菜单)
Canvas(画布)
Text(文本框)
Message(消息框):用于显示多行文本
Spinbox(数值调节框):允许用户从一系列值中选择
ttk 独有的小部件:
Combobox(组合框):结合了 Entry 和下拉列表
Notebook(笔记本):用于创建选项卡式界面
Progressbar(进度条):显示任务进度
Separator(分隔符):用于分隔其他小部件
Sizegrip(大小调整手柄):允许用户调整窗口大小
Treeview(树状视图):用于显示层次化数据
事件循环
tkinter 应用程序通常运行在一个事件循环中,等待用户交互并响应事件。tkinter 允许你通过绑定事件来响应用户交互。
tkinter 提供了几种布局管理器来控制 widgets 的位置和大小:
pack:按照上、下、左、右方向逐步排列widgets。
grid:使用网格系统布局 widgets。
place:精确控制 widgets 的位置和大小。
tkinter程序的基本结构
一个最简单的 tkinter 程序确实应该包含以下四个主要部分:
导入 tkinter 模块
创建主窗口(root 窗口)
添加人机交互控件和相应的事件函数
启动主循环(mainloop)
以下是一个包含多个 widgets 和事件处理的简单较完整的示例:
import tkinter as tk
from tkinter import messagebox
# 事件处理函数
def on_button_click():
messagebox.showinfo("Info", "Button clicked!")
# 创建主窗口
root = tk.Tk()
# 设置窗口大小为宽300像素,高200像素
root.geometry("300x200")
# 设置窗口标题
root.title("Tkinter Example")
# 创建标签
label = tk.Label(root, text="Hello, Tkinter!")
label.pack()
# 创建按钮,绑定事件处理函数
button = tk.Button(root, text="Click Me", command=on_button_click)
button.pack()
# 进入主事件循环
root.mainloop()
上面示例运行效果: