Tkinter 组件详解(十八):PanedWindow
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相关推荐
- Tkinter 组件详解(八):Listbox
Tkinter 组件详解之Listbox Listbox(列表框)组件用于显示一个选择列表.Listbox 只能包含文本项目,并且所有的项目都需要使用相同的字体和颜色.根据组件的配置,用户可以从列表中 ...
- Tkinter 组件详解(十):Scale
Tkinter 组件详解之Scale Scale(刻度)组件看起来像是一个带数据的 Scrollbar(滚动条)组件,但事实上它们是不同的两个东东.Scale 组件允许用于通过滑动滑块来选择一个范围内 ...
- Tkinter 组件详解(一):Label
Tkinter 组件详解之Label Label(标签)组件用于在屏幕上显示文本或图像.Label 组件仅能显示单一字体的文本,但文本可以跨越多行.另外,还可以为其中的个别字符加上下划线(例如用于表示 ...
- Tkinter 组件详解(七):Entry
Tkinter 组件详解之Entry Entry(输入框)组件通常用于获取用户的输入文本. 何时使用 Entry 组件? Entry 组件仅允许用于输入一行文本,如果用于输入的字符串长度比该组件可显示 ...
- Tkinter 组件详解(五):Frame
Tkinter 组件详解之Frame Frame(框架)组件是在屏幕上的一个矩形区域.Frame 主要是作为其他组件的框架基础,或为其他组件提供间距填充. 何时使用 Frame 组件? Frame 组 ...
- Tkinter 组件详解(九):Scrollbar
Tkinter 组件详解之Scrollbar Scrollbar(滚动条)组件用于滚动一些组件的可见范围,根据方向可分为垂直滚动条和水平滚动条.Scrollbar 组件常常被用于实现文本.画布和列表框 ...
- Tkinter组件详解(五):Listbox和Scrollbar
Tkinter组件详解之Listbox Listbox(列表框)组件用于显示一个选择列表.Listbox 只能包含文本项目,并且所有的项目都需要使用相同的字体和颜色.根据组件的配置,用户可以从列表中选 ...
- Tkinter 组件详解(四):Radiobutton
Tkinter 组件详解之Radiobutton Radiobutton(单选按钮)组件用于实现多选一的问题.Radiobutton 组件可以包含文本或图像,每一个按钮都可以与一个 Python 的函 ...
- Tkinter 组件详解(十九):Toplevel
Toplevel(顶级窗口)组件类似于 Frame 组件,但 Toplevel 组件是一个独立的顶级窗口,这种窗口通常拥有标题栏.边框等部件. 何时使用 Toplevel 组件? Toplevel 组 ...
最新文章
- 【动态规划】装箱问题
- vm虚拟机安装系统后出现operating system not found解决办法(VM装ghost 不能进系统的解决方法)
- MongoDB与PHP的添加、修改、查询、删除
- 正则表达式下——相关方法
- Hadoop、Spark、Hbase、Hive的安装
- y2第一章 初始mybatis的上机3_MyBatis3.2.x从入门到精通之第一章
- 史上最全!近千篇机器学习自然语言处理论文!都这儿了
- JS+HTML画图的几种方法
- 想多赚钱就要多培养自己脖子以上的能力
- php cms 新闻采集,自动新闻采集软件快速入门图文详细教程
- Python入门笔记3
- 在线电子书阅读小程序,微信小程序电子书阅读,微信小程序小说阅读器毕业设计作品
- hdwiki can not connect to mysql_HDWIKI最新版Update注入可修改管理员密码(MYSQL进制技巧)...
- 强化学习导论_Example 6.5: Windy Grid-world
- wget 和scp对比_如何下载scp、wget、inotify及如何偷包
- 极客日报:微信正式宣布开放外部链接;iPhone13预购开启导致苹果官网崩了;特斯拉将向车主提供新版 FSD
- 如果你在做安利或者认识做安利的人
- python构建一个计算列表中位数的函数_python学习之数据科学库
- 【装载】宋鸿兵:美国国债是史上最大骗局 中日是最大输家
- 什么是双亲委派,有什么好处?