tkinter高级布局之PanedWindow和notebook详解

 更新时间:2023年08月18日 10:31:16   作者:微小冷  
本文主要介绍了tkinter中的两种布局控件,分别是可以动态划分子控件的PanedWindow,和提供了选项卡工具的notebook,感兴趣的小伙伴可以学习一下

tkinter传统的布局工具就是Frame,顶多算上LabelFrame,然后运用place, grid和pack,来排满一张窗口,其他的就没有了。接下来要介绍的两种布局控件,或者说是容器比较恰当,分别是可以动态划分子控件的PanedWindow,和提供了选项卡工具的otebook,其中后者只存在于tkinter.ttk中。

PanedWindow

PanedWindow可以理解为是更加高级的窗口或者Frame,在PanedWindow中,其子控件可以自由拖动边框。这个控件在tkinter和tkinter.ttk中都有,下面用ttk为示例

import tkinter as tk
import tkinter.ttk as ttk
pw = ttk.PanedWindow(orient='horizontal')
pw.pack(fill="both", expand=1)
pw.add(ttk.LabelFrame(pw, text="left"))
pw.add(ttk.LabelFrame(pw, text="right"))
tk.mainloop()

效果如下

在PaneWindow中,除了设置宽高的height, width,背景色bg,边框宽度bd,鼠标样式cursor,边框样式relief这些通用参数外,主要参数如下

参数
showhandle为True时显示方形手柄
handlepad手柄位置,默认8像素
handlesize手柄边长,默认8像素
opaqueresize默认为True,窗格的尺寸随用户鼠标的拖拽而实时变化;如设为False,则只有在松开鼠标后,窗格尺寸才发生变化。
orient窗格分布方式,可选 horizontal(横向)和 vertical(纵向)
sashpad设置每一条分割线到窗格间的间距
sashrelief分割线样式,默认"flat",可选"sunken",“raised”,“groove” 或 “ridge”
sashwidth设置分割线的宽度

notebook

选项卡也是非常实用的布局利器,有了这个,可以让窗口可以插入更多的内容,简单示例如下

nt = ttk.Notebook()
lf1 = ttk.LabelFrame(nt, text="选项卡1", labelanchor='n')
nt.add(lf1, text='选项卡1')
lf2 = ttk.LabelFrame(nt, text="选项卡2", labelanchor='n')
nt.add(lf2, text='选项卡2')
nt.pack(fill=tk.BOTH, expand=True)
tk.mainloop()

效果如下

其中add函数可以添加新的选项卡,除了待添加控件之外,其主要参数如下

参数
text选项卡中标题
compound当选项卡内同时含图像和文字时,彼此之间的位置关系
image选项卡以图像方式呈现
padding内边距
state选项卡状态,可选normal、disabled、hidden
sticky指出子窗口面板的配置方式,可选nsew,表示南北东西
underline指出第几个字母含下划线,从0开始计算的索引

到此这篇关于tkinter高级布局之PanedWindow和notebook详解的文章就介绍到这了,更多相关tkinter布局内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决Django中调用keras的模型出现的问题

    解决Django中调用keras的模型出现的问题

    今天小编就为大家分享一篇解决Django中调用keras的模型出现的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python使用re模块实现正则表达式操作指南

    Python使用re模块实现正则表达式操作指南

    在Python中需要通过正则表达式对字符串进⾏匹配的时候,可以使⽤⼀个python自带的模块,名字为re,下面这篇文章主要给大家介绍了关于Python使用re模块实现正则表达式操作的相关资料,需要的朋友可以参考下
    2022-07-07
  • Python封装原理与实现方法详解

    Python封装原理与实现方法详解

    这篇文章主要介绍了Python封装原理与实现方法,结合实例形式较为详细的分析了Python封装的概念、原理、实现方法及相关操作注意事项,需要的朋友可以参考下
    2018-08-08
  • 在VScode中引用自定义模块问题

    在VScode中引用自定义模块问题

    这篇文章主要介绍了在VScode中引用自定义模块问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • Python图像处理之图像算术与逻辑运算详解

    Python图像处理之图像算术与逻辑运算详解

    这篇文章将详细讲解图像算法运算与逻辑运算,包括图像加法、图像减法、图像与运算、图像或运算、图像非运算与图像异或运算。感兴趣的可以了解一下
    2022-01-01
  • 一文秒懂Python中的字符串

    一文秒懂Python中的字符串

    这篇文章主要介绍了一文秒懂Python中的字符串,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Python找出9个连续的空闲端口

    Python找出9个连续的空闲端口

    这篇文章主要介绍了Python找出9个连续的空闲端口的方法,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • python 的 scapy库,实现网卡收发包的例子

    python 的 scapy库,实现网卡收发包的例子

    今天小编就为大家分享一篇python 的 scapy库,实现网卡收发包的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • pyppeteer执行js绕过webdriver监测方法下

    pyppeteer执行js绕过webdriver监测方法下

    这篇文章主要为大家介绍了pyppeteer上执行js并绕过webdriver监测常见方法的上篇,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • python爬虫之selenium库的安装及使用教程

    python爬虫之selenium库的安装及使用教程

    今天带大家来学习怎么安装使用selenium库,文中有非常详细的图文介绍,对正在学习python爬虫的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05

最新评论