PanedWindow 组件(Tk8.4 新增)是一个空间管理组件。跟 Frame 组件类似,都是为组件提供一个框架,不过 PanedWindow 允许让用户调整应用程序的空间划分。

何时使用 PanedWindow 组件?

当你需要提供一个可供用户调整的多空间框架的时候,可以使用 PanedWindow 组件。PanedWindow 组件会为每一个子组件生成一个独立地窗格,用户可以自由调整窗格的大小。

用法

创建一个 2 窗格的 PanedWindow 组件非常简单:

import tkinter as tkm = tk.PanedWindow(orient="vertical")
m.pack(fill="both", expand=1)top = tk.Label(m, text="top pane")
m.add(top)bottom = tk.Label(m, text="bottom pane")
m.add(bottom)tk.mainloop()

创建一个 3 窗格的 PanedWindow 组件则需要一点小技巧:

import tkinter as tkm1 = tk.PanedWindow()
m1.pack(fill="both", expand=1)left = tk.Label(m1, text="left pane")
m1.add(left)m2 = tk.PanedWindow(orient="vertical")
m1.add(m2)top = tk.Label(m2, text="top pane")
m2.add(top)bottom = tk.Label(m2, text="bottom pane")
m2.add(bottom)tk.mainloop()

这里不同窗格事实上是有一条“分割线”(sash)隔开,虽然你看不到,但你却可以感受到它的存在。不信?不妨把鼠标缓慢移动到大概的位置,当鼠标指针改变的时候后拖拽鼠标......

但我们也可以把“分割线”给显式地显示出来,并且可以为它附上一个“手柄”(handle):

import tkinter as tkm1 = tk.PanedWindow(showhandle=True, sashrelief="sunken")
m1.pack(fill="both", expand=1)left = tk.Label(m1, text="left pane")
m1.add(left)m2 = tk.PanedWindow(orient="vertical", showhandle=True, sashrelief="sunken")
m1.add(m2)top = tk.Label(m2, text="top pane")
m2.add(top)bottom = tk.Label(m2, text="bottom pane")
m2.add(bottom)tk.mainloop()

参数

PanedWindow(master=None, **options) (class)

master -- 父组件

**options -- 组件选项,下方表格详细列举了各个选项的具体含义和用法:

选项 含义
background 设置背景颜色
bg 跟 background 一样
borderwidth 设置边框宽度
bd 跟 borderwidth 一样
cursor 1. 指定当鼠标在 PanedWindow 上飘过的时候的鼠标样式
2. 默认值由系统指定
handlepad 1. 调节“手柄”的位置
2. 例如 orient="vertical",则 handlepad 选项表示“分割线”上的手柄与左端的距离
3. 默认值是 8 像素
handlesize 1. 设置“手柄”的尺寸(由于“手柄”必须是一个正方形,所以是设置正方形的边长)
2. 默认值是 8 像素
height 1. 设置 PanedWindow 的高度
2. 如果忽略该选项,则高度由子组件的尺寸决定
opaqueresize 1. 该选项定义了用户调整窗格尺寸的操作
2. 如果该选项的值为 True(默认),窗格的尺寸随用户鼠标的拖拽而改变
3. 如果该选项的值为 False,窗格的尺寸在用户释放鼠标的时候才更新到新的位置
orient 1. 指定窗格的分布方式
2. 可以是 "horizontal"(横向分布)和 "vertical"(纵向分布)
relief 1. 指定边框样式
2. 默认值是 "flat"
3. 另外你还可以设置 "sunken","raised","groove" 或 "ridge"
sashpad 设置每一条分割线到窗格间的间距
sashrelief 1. 设置分割线的样式
2. 默认值是:"flat"
3. 另外你还可以设置 "sunken","raised","groove" 或 "ridge"
sashwidth 设置分割线的宽度
showhandle 1. 设置是否显示调节窗格的手柄
2. 默认值为 False
width 1. 设置 PanedWindow 的宽度
2. 如果忽略该选项,则高度由子组件的尺寸决定

方法

add(child, **options)
-- 添加一个新的子组件到窗格中
-- 下方表格列举了各个 options 选项具体含义:

选项 含义
after 添加新的子组件到指定子组件后边
before 添加新的子组件到指定子组件前边
height 指定子组件的高度
minsize 1. 该选项控制窗格不得低于的值
2. 如果 orient="horizontal",表示窗格的宽度不得低于该选项的值
3. 如果 orient="vertical",表示窗格的高度不得低于该选项的值
padx 指定子组件的水平间距
pady 指定子组件的垂直间距
sticky 1. 当窗格的尺寸大于子组件时,该选项指定子组件位于窗格的位置
2. 可选的值有:"e"、"s"、"w"、"n"(分别代表东南西北四个方位)以及它们的组合值
3. 例如 NE 表示子组件显示在右上角的位置
width 指定子组件的宽度

forget(child)
-- 删除一个子组件

identify(x, y)
-- 给定一个坐标(x, y),返回该坐标所在的元素名称
-- 如果该坐标位于子组件上,返回空字符串
-- 如果该坐标位于分割线上,返回一个二元组(n, 'sash'),n 为 0 表示第一个分割线
-- 如果该坐标位于手柄上,返回一个二元组(n, 'handle'),n 为 0 表示第一个手柄

panecget(child, option)
-- 获得子组件指定选项的值

paneconfig(child, **options)
-- 设置子组件的各种选项
-- 下方表格列举了各个 options 选项具体含义:

选项 含义
after 添加新的子组件到指定子组件后边
before 添加新的子组件到指定子组件前边
height 指定子组件的高度
minsize 1. 该选项控制窗格不得低于的值
2. 如果 orient="horizontal",表示窗格的宽度不得低于该选项的值
3. 如果 orient="vertical",表示窗格的高度不得低于该选项的值
padx 指定子组件的水平间距
pady 指定子组件的垂直间距
sticky 1. 当窗格的尺寸大于子组件时,该选项指定子组件位于窗格的位置
2. 可选的值有:"e"、"s"、"w"、"n"(分别代表东南西北四个方位)以及它们的组合值
3. 例如 NE 表示子组件显示在右上角的位置
width 指定子组件的宽度

paneconfigure(child, **options)
-- 跟 paneconfig() 一样

panes()
-- 将子组件以列表的形式返回

remove(child)
-- 跟 forget() 一样

sash_coord(index)
-- 返回一个二元组表示指定分割线的起点坐标

sash_dragto(index, x, y)
-- 实现将指定的分割线拖拽到一个新的位置
-- 与 sash_mark() 一起实现

sash_mark(index, x, y)
-- 注册当前的鼠标位置

sash_place(index, x, y)
-- 将指定分割线移动到一个新的位置

Tkinter 组件详解(十八):PanedWindow相关推荐

  1. Tkinter 组件详解(八):Listbox

    Tkinter 组件详解之Listbox Listbox(列表框)组件用于显示一个选择列表.Listbox 只能包含文本项目,并且所有的项目都需要使用相同的字体和颜色.根据组件的配置,用户可以从列表中 ...

  2. Tkinter 组件详解(十):Scale

    Tkinter 组件详解之Scale Scale(刻度)组件看起来像是一个带数据的 Scrollbar(滚动条)组件,但事实上它们是不同的两个东东.Scale 组件允许用于通过滑动滑块来选择一个范围内 ...

  3. Tkinter 组件详解(一):Label

    Tkinter 组件详解之Label Label(标签)组件用于在屏幕上显示文本或图像.Label 组件仅能显示单一字体的文本,但文本可以跨越多行.另外,还可以为其中的个别字符加上下划线(例如用于表示 ...

  4. Tkinter 组件详解(七):Entry

    Tkinter 组件详解之Entry Entry(输入框)组件通常用于获取用户的输入文本. 何时使用 Entry 组件? Entry 组件仅允许用于输入一行文本,如果用于输入的字符串长度比该组件可显示 ...

  5. Tkinter 组件详解(五):Frame

    Tkinter 组件详解之Frame Frame(框架)组件是在屏幕上的一个矩形区域.Frame 主要是作为其他组件的框架基础,或为其他组件提供间距填充. 何时使用 Frame 组件? Frame 组 ...

  6. Tkinter 组件详解(九):Scrollbar

    Tkinter 组件详解之Scrollbar Scrollbar(滚动条)组件用于滚动一些组件的可见范围,根据方向可分为垂直滚动条和水平滚动条.Scrollbar 组件常常被用于实现文本.画布和列表框 ...

  7. Tkinter组件详解(五):Listbox和Scrollbar

    Tkinter组件详解之Listbox Listbox(列表框)组件用于显示一个选择列表.Listbox 只能包含文本项目,并且所有的项目都需要使用相同的字体和颜色.根据组件的配置,用户可以从列表中选 ...

  8. Tkinter 组件详解(四):Radiobutton

    Tkinter 组件详解之Radiobutton Radiobutton(单选按钮)组件用于实现多选一的问题.Radiobutton 组件可以包含文本或图像,每一个按钮都可以与一个 Python 的函 ...

  9. Tkinter 组件详解(十九):Toplevel

    Toplevel(顶级窗口)组件类似于 Frame 组件,但 Toplevel 组件是一个独立的顶级窗口,这种窗口通常拥有标题栏.边框等部件. 何时使用 Toplevel 组件? Toplevel 组 ...

最新文章

  1. 【动态规划】装箱问题
  2. vm虚拟机安装系统后出现operating system not found解决办法(VM装ghost 不能进系统的解决方法)
  3. MongoDB与PHP的添加、修改、查询、删除
  4. 正则表达式下——相关方法
  5. Hadoop、Spark、Hbase、Hive的安装
  6. y2第一章 初始mybatis的上机3_MyBatis3.2.x从入门到精通之第一章
  7. 史上最全!近千篇机器学习自然语言处理论文!都这儿了
  8. JS+HTML画图的几种方法
  9. 想多赚钱就要多培养自己脖子以上的能力
  10. php cms 新闻采集,自动新闻采集软件快速入门图文详细教程
  11. Python入门笔记3
  12. 在线电子书阅读小程序,微信小程序电子书阅读,微信小程序小说阅读器毕业设计作品
  13. hdwiki can not connect to mysql_HDWIKI最新版Update注入可修改管理员密码(MYSQL进制技巧)...
  14. 强化学习导论_Example 6.5: Windy Grid-world
  15. wget 和scp对比_如何下载scp、wget、inotify及如何偷包
  16. 极客日报:微信正式宣布开放外部链接;iPhone13预购开启导致苹果官网崩了;特斯拉将向车主提供新版 FSD
  17. 如果你在做安利或者认识做安利的人
  18. python构建一个计算列表中位数的函数_python学习之数据科学库
  19. 【装载】宋鸿兵:美国国债是史上最大骗局 中日是最大输家
  20. 什么是双亲委派,有什么好处?

热门文章

  1. vs开发,添加try catch(...)发现没有捕获异常,需要对编译命令进行设置
  2. 教你科学实施有氧运动
  3. MyBatis中日期时间的处理
  4. 软件公司,销售管理门道(七)销售协同
  5. 一文了解常用思维导图与画图软件
  6. 目标网站怎么样才能收集尽可能详细信息
  7. 手机扫描证件识别的优势
  8. 初学Python:encode、decode和Unicode等
  9. 《游戏脚本的设计与开发》-(RPG部分)3.1 RPG地图到底怎么做?
  10. 【软件工程】简答题汇总