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

        在简单的界面设计中,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()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Flutter开发之objectbox

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

d3dcompiler_43.dll丢失的解决方法,快速解决win10系统错误问题

当系统提示“d3dcompiler_43.dll缺失”时,意味着计算机中缺少这一关键性动态链接库文件。该文件作为DirectX 3D编译器组件的一部分,对于许多依赖于DirectX技术的应用程序或游戏至关重要。这个错误通常会导致游戏或应用程序无法正常运行。为了解决这个问题…

java Web洗衣店管理系统用eclipse定制开发mysql数据库BS模式java编程jdbc

一、源码特点 JSP 洗衣店管理系统是一套完善的web设计系统,对理解JSP java 编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发,数据库为Mysql5.0,使用…

记一次dubbo provider获取不到dubbo.tag问题排查

1. 背景 项目里通过dubbo.taggray传递灰度标,但是上游consumer已经在attachment里面设置dubbo.gray了,下游却拿不到 2. 排查过程 2.1. 前提 先把源码下载下来,方便排查 详细可见:tps://blog.csdn.net/qq_26012495/article/det…

9、jenkins微服务持续集成(一)

文章目录 一、流程说明二、源码概述三、本地部署3.1 SpringCloud微服务部署本地运行微服务本地部署微服务3.2 静态Web前端部署四、Docker快速入门一、流程说明 Jenkins+Docker+SpringCloud持续集成流程说明 大致流程说明: 开发人员每天把代码提交到Gitlab代码仓库Jenkins从G…

烟草行业率先布局新质生产力,中国烟草11省40家公司已上线实在Agent数字员工

为了更好赋能烟草行业数智化转型发展需求,各地烟草集团公司都开始陆续展开数智化赋能培训。近日,杭州烟草临安分公司举办“人工智能作为企业新质生产力发展的落地探索”论坛会议,实在智能受邀出席,聚焦“TARS大模型及实在Agent数字…

武汉星起航:引领跨境电商新潮流,一站式服务助合作伙伴成功起航

武汉星起航电子商务有限公司是一家集自营亚马逊跨境电商与亚马逊卖家孵化服务于一体的公司。在创始人张振邦先生的引领下,公司凭借深厚的电子商务运营经验和对行业的深刻洞察,积极响应国家大力发展跨境电商行业的号召,为刚起步和未起步的合作…

vue3封装Element表格自适应

表格高度自适应 分页跟随表格之后 1. 满屏时出现滚动条 2. 不满屏时不显示滚动条 坑 表格设置maxHeight后不出现滚动条 解决方案 表格外层元素设置max-height el-table–fit 设置高度100% .table-box {max-height: calc(100% - 120px); } .el-table--fit {height: 100%; }示例代…

会声会影剪刀为什么灰色 会声会影分割素材的方法 会声会影视频制作教程 会声会影2023旗舰版下载 会声会影快捷键

会声会影是一款操作简单,功能齐全,适合新手使用的视频剪辑软件。在使用会声会影剪辑的过程中,我们一般需要使用【剪刀工具】,但有时会声会影剪刀是灰色无法使用的状态,这个时候该怎么办呢?本文将为大家介绍…

pytest--python的一种测试框架--简介

一、什么是接口测试 接口测试是软件测试的一种类型,用于验证不同软件系统之间的接口是否按照设计规范进行通信和交互。接口测试通常涉及以下方面: 功能性验证:确认接口按照规范执行预期的功能。 性能测试:验证接口在不同负载条…

木地板 VS 瓷砖,不同风格应该怎么选?福州中宅装饰,福州装修

不同装修风格应该怎么选择地板铺贴材质?是选择木地板还是瓷砖?以下分点阐述: ①现代简约风格 推荐使用瓷砖。因为瓷砖的表面光滑,能反射出灯光的倒影,营造出简洁明亮的视觉效果。同时,瓷砖耐磨、易清洁&am…

CNN卷积神经网络股票价格预测

部分代码: %% 清空环境变量 warning off % 关闭报警信息 close all % 关闭开启的图窗 clear % 清空变量 clc % 清空命令行 %% 重构数据 data_Trend xlsread("dataguOne.xlsx") dT …

idea-创建java8的springboot项目

现在使用IDEA创建 Spring Boot 项目,jdk 版本最低要求为 17。Spring Boot 官方在全力维护 3.x 版本,而 Spring Boot 3.x 对 jdk 版本的最低要求为17。 如果需要继续使用 jdk8,则需要修改 Server URL ,改成:https://st…

electron的学习基础汇总

通过学习electron了解一下做项目中好奇的问题,我觉得下面这张图就可以说明一切了,就是在初次创建并显示主窗口后,一切都将建立在渲染进程和主进程的通信上,而用的技术就是ipcMain和ipcRender,那么渲染进程如何与主进程…

X-Bogus逆向分析(纯算+补环境)

声明 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 前言 此平台 本人 仅限…

储能逆变器测试负载箱解决方案

储能逆变器是新能源领域的重要设备,其性能的优劣直接影响到整个系统的运行效率和稳定性。因此,对储能逆变器进行严格的测试和验证是保证其性能的关键步骤。在这个过程中,负载箱是必不可少的工具,它可以模拟真实的负载条件&#xf…

JUC并发编程——对于synchronized关键字的理解

现象🔍: 两个线程对初始值为 0 的静态变量一个做自增,一个做自减,各做 5000 次,最后输出的 counter一定为0 吗? Slf4j(topic "c.Test17") public class Test17 {static int counter 0;public…

可望而不可即的“人文关怀”

死亡既然是最后的归宿,生命的必然,自然也就没有必要过多地害怕了。一切顺其自然,交给“命运”就是了。 我参观过英国的临终关怀医院,这是世界上最早的一所临终关怀医院,已有100多年历史。 那里的大多数病人都只剩一个…

第1章.提示词:开启AI智慧之门的钥匙

什么是提示词? 提示词,是引导语言模型的指令,让用户能够驾驭模型的输出,确保生成的文本符合需求。 ChatGPT,这位文字界的艺术大师,以transformer架构为基石,能轻松驾驭海量数据,编织…

【机器学习之---数学】马尔科夫链

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 马尔科夫 1. 概念 1.1 引言 马尔可夫链在许多领域都有应用,包括物理学、生物学、工程学、经济学和计算机科学等。在计算机科学中&#xff0…