文章目录
- 一、组件简介
- 二、运用实例
- 1. 两窗格 PanedWindow
- 3. 三窗格 PanedWindow
- 三、参数方法
- 1. 参数汇总
- 2. 方法汇总
一、组件简介
PanedWindow 组件,多窗格窗口(我自己翻译的…),它是tkinter中的一个空间管理组件,能够根据需要划分出多个空间窗格。
PanedWindow 跟 Frame 组件类似的功能,都能够提供一个框架,但是 PanedWindow 更强的是能够形成多个框架空间,在屏幕上生成一个独立地窗格,并且用户还可以*调整窗格大小。
二、运用实例
——
1. 两窗格 PanedWindow
首先我们来创建一个2个窗格的 PanedWindow ,来初步感受一下它的使用。
import tkinter as tk
root = tk.Tk()
pw = tk.PanedWindow(sashrelief='sunken') # 设置分割线样式为sunken
pw.pack(fill='both', expand=True)
left = tk.Label(pw, text="左窗格")
pw.add(left) # 添加子组件 left
right = tk.Label(pw, text='右窗格')
pw.add(right) # 添加子组件 right
root.mainloop()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
运行程序来感受一下,我们会发现屏幕中生成了两个窗格,拖动中间的分割线,还能够任意改变左右两个窗格的大小。
关于代码部分,还是有需要强调的
- 默认情况下生成的 PandeWindow 就是像上图一样左右分隔的两个窗格,如果要生成上下分隔的窗格,需要设置参数
orient='vertical'
- 参数
sashrelief='sunken'
表示设置窗格之间的分割线为’sunken’样式,sashrelief 可以设置的为:flat(默认)、sunken、raised、groove以及ridge - 利用
add()
方法,我们可以将其他组件添加到 PanedWindow 的窗格里
——
3. 三窗格 PanedWindow
既然我们了解了 PanedWindow 的基础用法,接下来我们来学习如何创建三窗格。
因为你一旦知道了怎么创建三窗格,那么四窗格、五窗格……都是一模一样的方法。
import tkinter as tk
root = tk.Tk()
# 首先创建左右分布的2窗格
pw1 = tk.PanedWindow(sashrelief='sunken')
pw1.pack(fill='both', expand=True)
# 左边的窗格添加Label组件
left = tk.Label(pw1, text="左窗格")
pw1.add(left)
# 再创建一个上下分布的2窗格
pw2 = tk.PanedWindow(orient='vertical',sashrelief='raised')
# 将pw2放在pw1上
pw1.add(pw2)
# 在pw2中,上窗格添加Label组件
top = tk.Label(pw2, text='顶窗格')
pw2.add(top)
# 在pw2中,下窗格添加Label组件
bottom = tk.Label(pw2, text='底窗格')
pw2.add(bottom)
root.mainloop()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
运行程序,我们看看生成是不是像上面图片画的那样。
本质上其实很好理解,就是把一个 PanedWindow 当成子组件放在另一个 PanedWindow 上面。
通过这样一个又一个 PanedWindow 的叠加,同时调节各个窗格的大小,从而可以生成任意样式的多窗格的。
三、参数方法
——
1. 参数汇总
总结一下 PanedWindow 组件中常用的参数以及用法
——
2. 方法汇总
add(child, **options)
- 添加一个新的子组件到窗格中
- 下方表格列举了各个 options 选项具体含义:
forget(child)
- 删除一个子组件
identify(x, y)
- 给定一个坐标(x, y),返回该坐标所在的元素名称
- 如果该坐标位于子组件上,返回空字符串
- 如果该坐标位于分割线上,返回一个二元组(n, ‘sash’),n 为 0 表示第一个分割线
- 如果该坐标位于手柄上,返回一个二元组(n, ‘handle’),n 为 0 表示第一个手柄
panecget(child, option)
- 获得子组件指定选项的值
paneconfig(child, **options)
- 设置子组件的各种选项
- 下方表格列举了各个 options 选项具体含义:
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)
- 将指定分割线移动到一个新的位置