ttkbootstrap界面美化系列之Notebook(四)

news2024/11/28 18:41:06

        在简单的界面设计中,Notebook也是常用的组件之一,Notebook组件的引入可以根据标签来切换不同的界面。使得界面更有层次感,不必都挤在一个界面上。在tkinter中就有Notebook组件,在ttkbootstrap中,同样也对Notebook进行了引入并做了对应的美化。

一:Notebook接口

查看Notebook的接口可以通过help来看

print(help(ttk.Notebook))
Help on class Notebook in module tkinter.ttk:

class Notebook(Widget)
 |  Notebook(*args, **kwargs)
 |
 |  Ttk Notebook widget manages a collection of windows and displays
 |  a single one at a time. Each child window is associated with a tab,
 |  which the user may select to change the currently-displayed window.
 |
 |  Method resolution order:
 |      Notebook
 |      Widget
 |      tkinter.Widget
 |      tkinter.BaseWidget
 |      tkinter.Misc
 |      tkinter.Pack
 |      tkinter.Place
 |      tkinter.Grid
 |      builtins.object
 |
 |  Methods defined here:
 |
 |  __init__(self, *args, **kwargs)
 |
 |  add(self, child, **kw)
 |      Adds a new tab to the notebook.
 |
 |      If window is currently managed by the notebook but hidden, it is
 |      restored to its previous position.
 |
 |  config = configure(self, cnf=None, **kwargs)
 |
 |  configure(self, cnf=None, **kwargs)
 |
 |  enable_traversal(self)
 |      Enable keyboard traversal for a toplevel window containing
 |      this notebook.
 |
 |      This will extend the bindings for the toplevel window containing
 |      this notebook as follows:
 |
 |          Control-Tab: selects the tab following the currently selected
 |                       one
 |
 |          Shift-Control-Tab: selects the tab preceding the currently
 |                             selected one
 |
 |          Alt-K: where K is the mnemonic (underlined) character of any
 |                 tab, will select that tab.
 |
 |      Multiple notebooks in a single toplevel may be enabled for
 |      traversal, including nested notebooks. However, notebook traversal
 |      only works properly if all panes are direct children of the
 |      notebook.
 |
 |  forget(self, tab_id)
 |      Removes the tab specified by tab_id, unmaps and unmanages the
 |      associated window.
 |
 |  hide(self, tab_id)
 |      Hides the tab specified by tab_id.
 |
 |      The tab will not be displayed, but the associated window remains
 |      managed by the notebook and its configuration remembered. Hidden
 |      tabs may be restored with the add command.
...
...
...

通过dir来查看Notebook支持的属性和方法

['_Misc__winfo_getint', '_Misc__winfo_parseitem', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_bind', '_configure', '_displayof', '_do', '_getboolean', '_getconfigure', '_getconfigure1', '_getdoubles', '_getints', '_grid_configure', '_gridconvvalue', '_last_child_ids', '_nametowidget', '_noarg_', '_options', '_register', '_report_exception', '_root', '_setup', '_subst_format', '_subst_format_str', '_substitute', '_tclCommands', '_unbind', '_windowingsystem', 'add', 'after', 'after_cancel', 'after_idle', 'anchor', 'bbox', 'bell', 'bind', 'bind_all', 'bind_class', 'bindtags', 'cget', 'clipboard_append', 'clipboard_clear', 'clipboard_get', 'columnconfigure', 'config', 'configure', 'deletecommand', 'destroy', 'enable_traversal', 'event_add', 'event_delete', 'event_generate', 'event_info', 'focus', 'focus_displayof', 'focus_force', 'focus_get', 'focus_lastfor', 'focus_set', 'forget', 'getboolean', 'getdouble', 'getint', 'getvar', 'grab_current', 'grab_release', 'grab_set', 'grab_set_global', 'grab_status', 'grid', 'grid_anchor', 'grid_bbox', 'grid_columnconfigure', 'grid_configure', 'grid_forget', 'grid_info', 'grid_location', 'grid_propagate', 'grid_remove', 'grid_rowconfigure', 'grid_size', 'grid_slaves', 'hide', 'identify', 'image_names', 'image_types', 'index', 'info', 'info_patchlevel', 'insert', 'instate', 'keys', 'lift', 'location', 'lower', 'mainloop', 'nametowidget', 'option_add', 'option_clear', 'option_get', 'option_readfile', 'pack', 'pack_configure', 'pack_forget', 'pack_info', 'pack_propagate', 'pack_slaves', 'place', 'place_configure', 'place_forget', 'place_info', 'place_slaves', 'propagate', 'quit', 'register', 'rowconfigure', 'select', 'selection_clear', 'selection_get', 'selection_handle', 'selection_own', 'selection_own_get', 'send', 'setvar', 'size', 'slaves', 'state', 'tab', 'tabs', 'tk_bisque', 'tk_focusFollowsMouse', 'tk_focusNext', 'tk_focusPrev', 'tk_setPalette', 'tk_strictMotif', 'tkraise', 'unbind', 'unbind_all', 'unbind_class', 'update', 'update_idletasks', 'wait_variable', 'wait_visibility', 'wait_window', 'waitvar', 'winfo_atom', 'winfo_atomname', 'winfo_cells', 'winfo_children', 'winfo_class', 'winfo_colormapfull', 'winfo_containing', 'winfo_depth', 'winfo_exists', 'winfo_fpixels', 'winfo_geometry', 'winfo_height', 'winfo_id', 'winfo_interps', 'winfo_ismapped', 'winfo_manager', 'winfo_name', 'winfo_parent', 'winfo_pathname', 'winfo_pixels', 'winfo_pointerx', 'winfo_pointerxy', 'winfo_pointery', 'winfo_reqheight', 'winfo_reqwidth', 'winfo_rgb', 'winfo_rootx', 'winfo_rooty', 'winfo_screen', 'winfo_screencells', 'winfo_screendepth', 'winfo_screenheight', 'winfo_screenmmheight', 'winfo_screenmmwidth', 'winfo_screenvisual', 'winfo_screenwidth', 'winfo_server', 'winfo_toplevel', 'winfo_viewable', 'winfo_visual', 'winfo_visualid', 'winfo_visualsavailable', 'winfo_vrootheight', 'winfo_vrootwidth', 'winfo_vrootx', 'winfo_vrooty', 'winfo_width', 'winfo_x', 'winfo_y']

二:Notebook创建

import ttkbootstrap as ttk
from ttkbootstrap.constants import *

root = ttk.Window(  title="主窗口",        #设置窗口的标题
                    themename="yeti",     #设置主题yeti
                    size=(400,200),        #窗口的大小
                 )

nb = ttk.Notebook()
nb.pack(fill=BOTH, expand=True)

b1 = ttk.Button(nb, text="solid", bootstyle="info-solid")
b1.pack(side=LEFT, padx=5, pady=10)
nb.add(b1, text='选项卡1')

b2 = ttk.Button(nb, text="outline", bootstyle="warning-outline")
b2.pack(side=LEFT, padx=5, pady=10)
nb.add(b2, text='选项卡2')

root.mainloop()

可以看到创建了一个Notebook,加入了两个标签页,每个标签页中放一个按钮,上面是一个最基本的创建Notebook的用例,ttk.Notebook也有很多参数

原始链接:tkinter.ttk — Tk themed widgets — Python 3.12.2 documentation

三:Notebook主题

Notebook可以用自带的主题,也可以自己定制主题

nb = ttk.Notebook(root, bootstyle=SUCCESS)

定制主题如下

import ttkbootstrap as ttk
from ttkbootstrap.constants import *

root = ttk.Window(  title="主窗口",        #设置窗口的标题
                    themename="yeti",     #设置主题yeti
                    size=(400,200),        #窗口的大小
                 )

s = ttk.Style()
s.configure('Custom.TNotebook', foreground='pink', background='yellow', borderwidth=10)
s.configure('Custom.TNotebook.Tab', foreground='blue', background='orange', borderwidth=10)
s.map('Custom.TNotebook.Tab', foreground=[('selected', 'red')], background=[('selected', 'blue')])

nb = ttk.Notebook(root,style='Custom.TNotebook')
nb.pack(fill=BOTH, expand=True)

b1 = ttk.Button(nb, text="solid", bootstyle="info-solid")
b1.pack(side=LEFT, padx=5, pady=10)
nb.add(b1, text='选项卡1')

b2 = ttk.Button(nb, text="outline", bootstyle="warning-outline")
b2.pack(side=LEFT, padx=5, pady=10)
nb.add(b2, text='选项卡2')

root.mainloop()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1556441.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【文献分享】MOSAICS 程序: 用于分析模拟轨迹中的膜结构和动力学的软件套件

题目:MOSAICS: A software suite for analysis of membrane structure and dynamics in simulated trajectories 链接: DOI: 10.1016/j.bpj.2022.11.005 MOSAICS:用于分析模拟轨迹中的膜结构和动力学的软件套件 分子动力学 (MD) 模拟已成…

大模型面试准备(八):一文详解国产大模型导师 LLaMA v1和v2

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学,针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何备战、面试常考点分享等热门话题进行了深入的讨论。 合集在这…

你该选择哪个职业呢?数据科学家、数据分析师和数据工程师

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

AI论文速读 | 【综述】用于轨迹数据管理和挖掘的深度学习:综述与展望

论文标题:Deep Learning for Trajectory Data Management and Mining: A Survey and Beyond 作者:Wei Chen(陈伟), Yuxuan Liang(梁宇轩), Yuanshao Zhu, Yanchuan Chang, Kang Luo, Haomin Wen(温皓珉), Lei Li, Yanwei Yu(于彦伟), Qingsong Wen(文青…

mixly编译esp32程序缺失问题bits/c++config.h

错误信息: 编译中... 使用平台的 ‘esp32’ 开发板,在列出的文件夹中:D:\windowsoftInstalled\mixly\mixly2.0-win32-x64\arduino-cli\Arduino15\packages\esp32\hardware\esp32\2.0.7 使用平台的 ‘esp32’ 代码,在列出的文件夹…

hcip结课考题答案解析 鹏

考试涵盖了BGP的基本状态、路由请求处理、网络层协议、路由聚合、网络连接管理、链路状态维护、路由信息发布、虚拟IP地址处理、路由表建立、AS外部路由学习等多个方面。考试内容涵盖了BGP的初始状态、活跃状态、Established状态、对等体交换、网络层协议、路由请求处理、链路状…

暴雨服务器X7740赋能大模型训练

数字经济浪潮愈演愈烈,大模型训练对服务器的要求也越来越高。在此背景下,暴雨信息发布专门为大规模模型训练而设计的全新旗舰GPU服务器—X7740,以卓越的计算性能、高速网络通信能力以及创新的能效表现,有效赋能大模型训练。 X7740 搭载了暴雨信息最新一代的英特尔至强可扩展处理…

gpt 3d三角形 重心坐标填充 沿x轴炫赵师傅

go import pygame from pygame.locals import * import sys import math# 初始化Pygame pygame.init()# 设置窗口大小 width, height 800, 600 screen pygame.display.set_mode((width, height)) pygame.display.set_caption(3D Triangle Fill with Barycentric Coordinates)…

Modelsim手动仿真实例

目录 1. 软件链接 2. 为什么要使用Modelsim 3. Modelsim仿真工程由几部分组成? 4. 上手实例 4.1. 新建文件夹 4.2. 指定目录 4.3. 新建工程 4.4. 新建设计文件(Design Files) 4.5. 新建测试平台文件(Testbench Files&…

简单实现企业微信远程打卡教程(永不迟到)

最近玩手游时刚好用到了手机模拟器,就是在电脑上安装一个手机模拟器,然后用电脑来挂机手机游戏 今天我突然有了一个想法,既然这个模拟器就是相当于一个虚拟的手机,那么是不是可以给它装上企业微信,然后让它帮我远程打卡…

mysql进阶知识总结

1.存储引擎 1.1MySQL体系结构 1).连接层 最上层是一些客户端和链接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证…

【IDEA】使用debug方式去运行java程序

什么是debug工具? 调试工具(debug工具)是一种用于帮助程序员识别和修复程序中的错误的工具。它们提供了一系列的功能,帮助程序员在代码执行的过程中跟踪和检测问题,例如查看变量的值、检查函数的调用栈、设置断点来停…

关于Oracle VM VirtualBox无法查询IP地址的原因

1.如下,输入ifconfig却没有显示我框住的显示IP。 2.原因有可能: (1)主机没连上网络。 (2)虚拟机网络设置不正确。

Linux项目自动化构建工具-make/ makefile及其应用:多文件编写第一个linux程序:进度条(懒人学习必备博文!!!)

目录 1.前言--make/makefile的引入 2.快速上手make/makefile---自动化构建 3.关于依赖关系和依赖方法 4.自动化清理 为什么我们执行编译的时候,make一下就好,清理却要使用make clean? 5. make/makefile是如何知道当前目录下可执行文件是否为最新 6.文件…

【文献分享】通过形态扫描仪阐明自组装肽聚集:蛋白质-肽结构表征的新工具

题目:Elucidating Self‐Assembling Peptide Aggregation via Morphoscanner: A New Tool for Protein‐Peptide Structural Characterization 通过形态扫描仪阐明自组装肽聚集:蛋白质-肽结构表征的新工具 自组装和分子折叠在自然界中无处不在&#xff…

Mistral 7B v0.2 基础模型开源,大模型微调实践来了

Mistral AI在3月24日突然发布并开源了 Mistral 7B v0.2模型,有如下几个特点: 和上一代Mistral v0.1版本相比,上下文窗口长度从8k提升到32k,上下文窗口(context window)是指语言模型在进行预测或生成文本时&…

【ensp实验】GRE和MGRE相关实验

要求: 1、R5为ISP,只能进行IP地址配置,其所有地址均配为公有IP地址; 2、R1和R5间使用PPP的PAP认证,R5为主认证方 R2与R5之间使用ppp的CHAP认证,R5为主认证方; R3与R5之间使用HDLC封装; 3、R1、R2、R3构建一个MGRE环境&#…

sheng的学习笔记-AI-人脸识别

目录:sheng的学习笔记-AI目录-CSDN博客 需要学习卷机神经网络等知识,见ai目录 目录 基础知识: 人脸验证(face verification) 人脸识别(face recognition) One-Shot学习(One-shot learning&…

脱壳之常用的加固样本特征

梆梆加固样本特征 清单文件入口 android:name“com.SecShell.SecShell.ApplicationWrapper” 特征 免费版 meta-data meta-data总结 assets/secData0.jar lib/armeabi/libSecShell.so lib/armeabi/libSecShell-x86.so 梆梆企业版 assets/classes0.jar lib/armeabi-v7a/libD…

Flutter开发之objectbox

Flutter开发之objectbox 在之前进行iOS开发的时候使用WCDB去进行管理数据库很方便,它支持ORM(Object-Relational Mapping,对象关系映射),用于实现面向对象编程语言里不同类型系统的数据之间的转换。 那么在Flutter开发…