百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

Python GUI 编程:tkinter 初学者入门指南——Ttk 选项卡 Notebook

liuian 2025-06-10 16:27 80 浏览

在本文中,将介绍如何使用 Tkinter Notebook 小部件创建选项卡。

Notebook 是由 Tkinter Ttk 模块引入的强大小部件。允许开发者创建包含多个选项卡的界面,每个选项卡可以包含不同的内容。

创建 Notebook 小部件,请使用如下构造函数:

notebook = ttk.Notebook(master,**kw)

添加选项卡

有两种方式可以为 Notebook 小部件添加选项卡。使用 add() 方法,在末尾附加一个新选项卡。使用 insert() 方法,可将选项卡添加到特定位置。

add() 方法

add(child, **kwargs)

insert() 方法

insert(location, child, **kwargs)

import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Notebook 选项卡演示')
label = ttk.Label(root, text = "选项卡演示")
label.pack(ipadx=5, ipady=5)

notebook = ttk.Notebook(root)
notebook.pack(fill='both', expand=True)

frame1 = ttk.Frame(notebook)
frame2 = ttk.Frame(notebook)

label1 = ttk.Label(frame1, text = "第一个选项卡区域")
label1.pack(expand=True)
label2 = ttk.Label(frame2, text = "第二个选项卡区域")
label2.pack(expand=True)

frame1.pack(fill='both', expand=True)
frame2.pack(fill='both', expand=True)
# 方法1
notebook.add(frame1, text='选项卡1')
notebook.add(frame2, text='选项卡2')

frame3 = ttk.Frame(notebook)         
label3 = ttk.Label(frame3, text = "第三个选项卡区域")
label3.pack(expand=True)
frame3.pack(fill= tk.BOTH, expand=True)
# 方法2
notebook.insert("end", frame3, text = "选项卡3")

root.mainloop()

访问选项卡

select()

select() 方法,不带任何参数将返回当前选定的选项卡。使用参数可以切换选项卡。

select(tab_id)

tab() 方法

tab() 方法,可以通过选项卡的 ID 访问选项卡的某些选项。

tab(tab_id, **kwargs)

import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Notebook 选项卡演示')
def tab_selected(event):
    tab_id = notebook.select()
    tab_text = notebook.tab(tab_id, 'text')
    label2['text'] = tab_text
    
frame = ttk.Frame(root)
label1 = ttk.Label(frame, text = "当前选项卡:")
label1.pack(side=tk.LEFT,)
label2 = ttk.Label(frame, text = "")
label2.pack()
frame.pack()

notebook = ttk.Notebook(root)
notebook.pack(fill='both', expand=True)
frame1 = ttk.Frame(notebook)
frame2 = ttk.Frame(notebook)

label3 = ttk.Label(frame1, text = "第一个选项卡区域")
label3.pack(expand=True)
label4 = ttk.Label(frame2, text = "第二个选项卡区域")
label4.pack(expand=True)

frame1.pack(fill='both', expand=True)
frame2.pack(fill='both', expand=True)
notebook.add(frame1, text='选项卡1')
notebook.add(frame2, text='选项卡2')
notebook.bind("<<NotebookTabChanged>>", tab_selected)
# 默认选择第二个选项卡
notebook.select(1)
root.mainloop()

自定义选项卡

将图像添加到选项卡标题

使用 Notebook 的 image 选项,将图片添加到选项卡的标题

import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Notebook 选项卡演示')
label1 = ttk.Label(root, text = "自定义选项卡")
label1.pack()
notebook = ttk.Notebook(root)
notebook.pack(fill='both', expand=True)
frame1 = ttk.Frame(notebook)
frame2 = ttk.Frame(notebook)
label3 = ttk.Label(frame1, text = "第一个选项卡区域")
label3.pack(expand=True)
label4 = ttk.Label(frame2, text = "第二个选项卡区域")
label4.pack(expand=True)
frame1.pack(fill='both', expand=True)
frame2.pack(fill='both', expand=True)
tab_image = tk.PhotoImage(file = "exit.png")
notebook.add(frame1, text='选项卡1', image = tab_image, compound = "left")
notebook.add(frame2, text='选项卡2')
root.mainloop()

垂直方向选项卡

自定义 Ttk Notebook 样式,设置参数 tabposition 为 wn,创建垂直方向选项卡。

import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Notebook 选项卡演示')

label1 = ttk.Label(root, text = "自定义选项卡")
label1.pack()
style = ttk.Style()
style.configure("Custom.TNotebook", tabposition="wn")  
notebook = ttk.Notebook(root, style="Custom.TNotebook")
notebook.pack(fill='both', expand=True)
frame1 = ttk.Frame(notebook)
frame2 = ttk.Frame(notebook)
label3 = ttk.Label(frame1, text = "第一个选项卡区域")
label3.pack(expand=True)
label4 = ttk.Label(frame2, text = "第二个选项卡区域")
label4.pack(expand=True)
frame1.pack(fill='both', expand=True)
frame2.pack(fill='both', expand=True)
notebook.add(frame1, text='选项卡1')
notebook.add(frame2, text='选项卡2')
root.mainloop()

更改主题美化选项卡

使用 theme_create() , style.theme_use 自定义更改当前主题,美化选项卡。

import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Notebook 选项卡演示')
style = ttk.Style()
style.theme_create( "dummy", parent="alt", settings={
        "TNotebook": {"configure": {"tabmargins": [2, 5, 2, 0] } },
        "TNotebook.Tab": {"configure": {"padding": [5, 1], "background": "#DCF0F2" },
        "map": {"background": [("selected", "#F2C84B")], "expand": [("selected", [1, 1, 1, 0])] } } } )
style.theme_use("dummy")

notebook = ttk.Notebook(root)
notebook.pack(fill='both', expand=True)
frame1 = ttk.Frame(notebook)
frame2 = ttk.Frame(notebook)
label3 = ttk.Label(frame1, text = "第一个选项卡区域")
label3.pack(expand=True)
label4 = ttk.Label(frame2, text = "第二个选项卡区域")
label4.pack(expand=True)
frame1.pack(fill='both', expand=True)
frame2.pack(fill='both', expand=True)
notebook.add(frame1, text='选项卡1')
notebook.add(frame2, text='选项卡2')
root.mainloop()

相关推荐

系统门窗一线品牌有哪些(中国系统门窗一线品牌有哪些)

轩尼斯门窗轩尼斯门窗创立于2004年,总部植根于佛山,生产基地在广东江苏共有4个,分别在凤岗厂区、盐城厂区、官窑厂区和范湖厂区;轩尼斯门窗在创建伊始就自主研发出了首款断桥铝门窗,产品技术专利超100项...

笔记本显卡天梯图排行榜(笔记本显卡天梯图最新版)

1、华硕ASUSROG-STRIX-RTX3080-O10G-GAMING1440-1935MHz华硕RTX3080被称为猛禽显卡,它将ROGSTRIX的轴流风扇进一步升级,扇叶数量也进行了...

惠普打印机售后维修官网(惠普打印机官方维修点查询)

是位于唐河县城区的惠普授权服务中心。这家维修点提供惠普打印机的售后服务和维修,包括故障排查、维修、更换零部件等。他们的技术人员都经过惠普的专业培训,能够提供高质量的服务。如果您的惠普打印机出现了问题,...

万能网卡驱动下载win11(万能网卡驱动windows7版2018最新版)

在windows11系统中点击桌面下方的开始图标,打开设置页面鼠标点击选择设备管理器选项。找到其中的网络适配器功能。右键选择显卡,点击卸载设备按钮等待卸载完成后重新安装驱动并重启计算机设备即可。想要修...

cpu总是100使用率怎么回事呢

CPU占用率100%可能有多种原因。以下是一些可能的原因:驱动没有经过认证,这可能导致CPU资源占用100%。杀毒软件可能会占用大量的CPU资源,因为它们需要实时监控网页、邮件、个人隐私等功能。病毒或...

苹果6怎么升级系统版本(苹果6怎么升级系统版本最高能到多少)

要是喜欢自己动手可以自己去官网上下载,新系统在更新,他只是不支持自动更新的。如果不想自己动手,可以去拼多多或者是淘宝里面找一找,多的是那种帮你刷新系统的。也就是一点点钱的事情。现在选择很多活人不会被尿...

windows2003镜像32位下载(win2003系统镜像)

虚拟光驱装系统,(win7,xp通用)具体步骤一、将从网上下载的win7旗舰版ISO系统文件存放到D盘。二、从网上下载虚拟光驱,打开安装后在任务栏右通知区显示“虚拟DAEMON管理器”图标,在我的电脑...

如何制作表格excel工作表(如何制作表格excel工作表表头)
  • 如何制作表格excel工作表(如何制作表格excel工作表表头)
  • 如何制作表格excel工作表(如何制作表格excel工作表表头)
  • 如何制作表格excel工作表(如何制作表格excel工作表表头)
  • 如何制作表格excel工作表(如何制作表格excel工作表表头)
win10电脑自动更新怎么关闭(win10电脑怎么关闭自动更新系统)

win10老推送win11打开的方法步骤如下,1,首先,打开设置,点击更新和安全2,打开后,点击windows预览体验计划3,打开后,点击开始4,然后按流程进行注册5,注册完成后,点击选择帐户6,然后...

电脑如何下载打印机驱动并安装
  • 电脑如何下载打印机驱动并安装
  • 电脑如何下载打印机驱动并安装
  • 电脑如何下载打印机驱动并安装
  • 电脑如何下载打印机驱动并安装
微软售后维修点(微软售后维修点江门)
  • 微软售后维修点(微软售后维修点江门)
  • 微软售后维修点(微软售后维修点江门)
  • 微软售后维修点(微软售后维修点江门)
  • 微软售后维修点(微软售后维修点江门)
window7下载steam(window7下载一键重装如何恢复网络)

回答如下:要在Windows7上下载Steam,您可以按照以下步骤操作:1.打开您的浏览器,访问Steam官网(https://store.steampowered.com)。2.点击页面右上角...

系统还原没有还原点怎么办(系统还原点不动怎么办)

如果电脑没有创建还原点,就不能使用系统还原来回到之前的状态。但是,可以尝试使用其他备份工具或软件来恢复数据或重建系统。比如,可以使用第三方备份软件来备份重要文件和数据。如果是系统出现问题,可以尝试重新...

正在准备windows(正在准备windows请勿关机怎么办)

这个情况在使用华为电脑时可能会遇到。一般来说,这是因为电脑正在进行系统更新或者安装软件程序等操作,导致启动时间较长。如果电脑显示“正在准备Windows,请勿关闭电源”,则说明电脑正在进行系统更新。...

有win10安装包怎么装系统(win10安装包安装教程)
有win10安装包怎么装系统(win10安装包安装教程)

如果是原版ISO镜像,可以加载到虚拟光驱直接安装。如果是第三方更改的就需要启动盘。个人建议用U盘启动盘来安装。下载一个u盘启动盘程序(优启通、大白菜……),按照提示把它安装到U盘。启动盘制作完毕以后,启动电脑安快捷键选择U盘启动。进入pe后...

2026-01-14 16:37 liuian