使用 Python-Tkinter 创建选项卡式小部件
Python提供了一系列 GUI 框架,可用于在Python中开发基于 GUI 的应用程序。最广泛使用的Python接口是 Tk 接口或 tkinter( 在Python 3.x 中重命名) 。与Python提供的其他接口相比,Tkinter 模块提供了广泛的小部件,可用于更快、更轻松地开发 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 选项卡式小部件的步骤:
- 导入 tkinter 模块
import tkinter as tk from tkinter import *
注意: Python 2.x 中的模块名称为“Tkinter”, Python 3.x 中为“tkinter”。这里使用Python 3.x。
- 导入包含 Notebook 小部件的 tkinter ttk 模块
from tkinter import ttk
- 创建父窗口(根)。
root = tk.Tk()
句法:
Tk()
解释:
用于创建父窗口。 Tk 类在没有任何参数的情况下被实例化(这里)。 - 将标题添加到父窗口(根)。
root.title("Tab Widget")
句法:
title(name)
范围:
名称:用于将所需名称传递给父窗口(根)。 - 创建选项卡控件
tabControl = ttk.Notebook(root)
句法:
Notebook(master=None, **options)
范围:
- master:父窗口(根)。
- options: Notebook() 方法接受的选项是高度、填充和宽度。此程序中不使用选项。
- 创建选项卡
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 小部件用于将选项卡小部件组合在一起。 - 添加选项卡
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 小部件添加新选项卡。 - 打包选项卡控件以使选项卡可见
tabControl.pack(expand=1, fill="both")
句法:
pack(**options)
范围:
- 展开:展开选项确保在展开父窗口小部件时具有非零展开值的窗口小部件之间的空间平均分配。
- 填充:填充选项确保小部件占据分配给它的空间。现在fill=”both”指定widget沿X轴和Y轴都占据空间,fill=”X”指定widget沿X轴占据空间,fill=”Y”指定widget沿Y轴占据空间轴。
解释:
pack() 方法用于在将小部件放入父小部件之前以块的形式组织小部件。这可以使用各种选项来完成,例如填充、扩展和侧面。 - 将 Label 小部件创建为父窗口(根)的子窗口
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。
解释:
标签小部件用于在屏幕上显示文本或图像。屏幕上显示的文本可以使用标签小部件中可用的各种选项进一步格式化。句法:
grid(**options)
范围:
- options: grid() 方法支持的选项有 column、columnspan、row、rowspan、padx、pady、ipadx、ipady 和sticky。
解释:
grid() 方法用于将父窗口部件拆分为行和列,更具体地说是一个 2D 表。它可用于指定小部件在父小部件中的位置。这里 grid() 方法指定了 Label 小部件的位置,即。基本上是文本在父窗口中的位置。 - 运行应用程序
root.mainloop()
语法: mainloop()
解释:
mainloop() 就像一个无限循环,用于运行应用程序。完整程序如下:
import tkinter as tk from tkinter import ttk root = tk.Tk() root.title("Tab Widget") tabControl = ttk.Notebook(root) tab1 = ttk.Frame(tabControl) tab2 = ttk.Frame(tabControl) tabControl.add(tab1, text ='Tab 1') tabControl.add(tab2, text ='Tab 2') tabControl.pack(expand = 1, fill ="both") 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) root.mainloop()
输出