Python 提供了一系列 GUI 框架,我们可以用它们来开发基于图形用户界面的应用程序。其中最广泛使用的 Python 接口是 Tk 接口,或者称为 tkinter(在 Python 3.x 中重命名)。与其他 Python 提供的接口相比,Tkinter 模块提供了广泛的部件(widgets),能让我们更快、更轻松地开发 GUI 应用程序。
tkinter.ttk 模块是对现有 tk 模块的改进。Ttk 模块配备了 18 个部件,其中 12 个已经存在于 Tkinter 模块中,例如 Button、Checkbutton、PanedWindow、Radiobutton、Entry、Frame、Label、LabelFrame、Menubutton、Scale、Scrollbar 和 Spinbox。新加入的部件包括 Combobox、Notebook、Sizegrip、Progressbar、Separator 和 Treeview。
在本文中,我们将使用 ttk 模块的 Notebook 部件来创建一个选项卡控件。ttk.Notebook 部件管理一组窗口,并且一次只显示一个。每个子窗口都对应一个选项卡。用户一次只能选择一个选项卡来查看窗口的内容。
下面是我们创建 tkinter 选项卡控件的步骤:
1. 导入 tkinter 模块
import tkinter as tk
from tkinter import *
注意: 在 Python 2.x 中模块名称是 ‘Tkinter’,而在 Python 3.x 中是 ‘tkinter’。本文使用的是 Python 3.x。
2. 导入包含 Notebook 部件的 tkinter.ttk 模块
from tkinter import ttk
3. 创建父窗口 (root)
root = tk.Tk()
语法:
Tk()
解释:
用于创建主窗口。在这里,Tk 类在实例化时不带任何参数。
4. 为父窗口 (root) 添加标题
root.title("Tab Widget")
语法:
title(name)
参数:
name: 用于将我们想要的名称传递给父窗口 (root)。
5. 创建选项卡控制器
tabControl = ttk.Notebook(root)
语法:
Notebook(master=None, **options)
参数:
- master: 父窗口 (root)。
- options: Notebook() 方法接受的选项有 height、padding 和 width。本程序中未使用这些选项。
6. 创建选项卡
tab1 = ttk.Frame(tabControl)
tab2 = ttk.Frame(tabControl)
语法:
Frame(master=None, **options)
参数:
- master: tabControl 是选项卡的父部件。
- options: Frame() 方法接受的选项有 class_、cursor、padding、relief、style、takefocus、height 和 width。本程序中未使用这些选项。
解释:
Frame 部件就像一个容器,用于将其他部件分组在一起。在这里,Frame 部件用于将选项卡部件分组在一起。
7. 添加选项卡
tabControl.add(tab1, text=‘Tab 1‘)
tabControl.add(tab2, text=‘Tab 2‘)
语法:
add(child, **options)
参数:
- child: tab1 和 tab2 是 tabControl 的子部件。
- options: add() 方法支持的选项有 sticky、state、padding、text、image、compound、underline。
解释:
add() 方法存在于 tk.ttk.Notebook 类中。它用于向 Notebook 部件添加新的选项卡。
8. 打包选项卡控制器以使选项卡可见
tabControl.pack(expand=1, fill="both")
语法:
pack(**options)
参数:
- expand: expand 选项确保当父部件扩展时,在具有非零 expand 值的部件之间平均分配空间。
- fill: fill 选项确保部件占据分配给它的空间。fill="both" 指定部件沿 X 轴和 Y 轴占据空间;fill="X" 指定部件沿 X 轴占据空间;fill="Y" 指定部件沿 Y 轴占据空间。
解释:
pack() 方法用于在将部件放入父部件之前,按块组织它们。这可以使用 fill、expand 和 side 等各种选项来完成。
9. 创建 Label 部件作为父窗口 (root) 的子部件
> ttk.Label(tab1, text="Welcome to GeeksForGeeks").grid(column=0, row=0, padx=30, pady=30)
> ttk.Label(tab2, text="Lets dive into the world of computers").grid(column=0, row=0, padx=30, pady=30)
语法:
Label(master, **options)
参数:
- master: 选项卡作为 Label 部件的父级。
- options: Label() 方法支持的选项有 anchor、bg、bitmap、bd、cursor、font、fg、height、width、image、justify、relief、padx、pady、textvariable、underline 和 wraplength。
解释:
Label 部件用于在屏幕上显示文本或图像。我们可以使用 Label 部件中的各种选项进一步格式化屏幕上显示的文本。
语法:
grid(**options)
参数:
- options: grid() 方法支持的选项有 column、columnspan、row、rowspan、padx、pady、ipadx、ipady 和 sticky。
解释:
g