tkinter 14 Panedwindow
References
- http://effbot.org/tkinterbook/panedwindow.htm
- http://bbs.fishc.com/thread-61214-1-1.html
简介
PanedWindow 组件(Tk8.4 新增)是一个空间管理组件, 跟Frame组件类似,都是为组件提供一个框架,不过 PanedWindow 允许让用户调整应用程序的空间划分。
- 一个PanedWindow是一个容器部件可能包含任何数量的窗格,水平或垂直排列.
- 每个窗格中包含一个部件,每一双窗格由一个可移动的(通过鼠标移动)窗扇分开。移动窗扇导致要么被调整窗框侧面的部件.
- 当你需要提供一个可供用户调整的多空间框架的时候,可以使用 PanedWindow 组件。PanedWindow 组件会为每一个子组件生成一个独立地窗格,用户可以自由调整窗格的大小。
实例
def test(master=None):
m1 = PanedWindow(master, showhandle=True, sashrelief=SUNKEN, handlepad=0)
m1.pack(fill=BOTH, expand=1)
# 1. 最左边的插件
left = Label(m1, text="left pane")
m1.add(left)
# 2. 中间的插件
m1.add(Label(m1, text='middle pane'))
# 3. 最右边的penal
m2 = PanedWindow(m1, orient=VERTICAL, showhandle=True, sashrelief=SUNKEN)
m1.add(m2)
# 给右边penal添加组件
top = Label(m2, text="top pane")
m2.add(top)
middle = PanedWindow(m2, orient=HORIZONTAL, showhandle=True)
middle.add(Label(middle, text="middle-left", bg='red', fg='white'))
middle.add(Label(middle, text="middle-right", bg='red', fg='white'))
m2.add(middle)
bottom = Label(m2, text="bottom pane")
m2.add(bottom)
属性和方法
属性
- sashcursor, 设置鼠标方法分割线上的样式
- sashpad, 设置每一条分割线到窗格间的间距
- sashrelief, 设置分割线的样式, FLAT(默认), SUNKEN≤RAISED,GROOVE,RIDGE
- sashwidth, 设置分割线的宽度
- showhandle, 设置是否显示调节窗格的手柄, 默认是False
- handlepad,
- 调节“手柄”的位置
- 例如 orient=VERTICAL,则 handlepad 选项表示“分割线”上的手柄与左端的距离
- 默认值是 8 像素
- handlesize,
- 设置“手柄”的尺寸(由于“手柄”必须是一个正方形,所以是设置正方形的边长)
- 默认值是 8 像素
- opaqueresize,
- 该选项定义了用户调整窗格尺寸的操作
- 如果该选项的值为 True(默认),窗格的尺寸随用户鼠标的拖拽而改变
- 如果该选项的值为 False,窗格的尺寸在用户释放鼠标的时候才更新到新的位置
- orient, 指定窗格的分布方式,可以是 HORIZONTAL(横向分布)和 VERTICAL(纵向分布)
- relief, 指定边框样式,FLAT(默认), SUNKEN≤RAISED,GROOVE,RIDGE
- height, 设置 PanedWindow 的高度,如果忽略该选项,则高度由子组件的尺寸决定
- width, 设置 PanedWindow 的宽度,如果忽略该选项,则高度由子组件的尺寸决定
- cursor, 指定当鼠标在 PanedWindow 上飘过的时候的鼠标样式
- background, 背景色
- borderwidth, 边框宽度
方法
-
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), 删除一个子组件
-
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 指定子组件的宽度 -
panecget(child, option) ,paneconfigure(child, **options)
- 获得子组件指定选项的值
-
panes() ,将子组件以列表的形式返回
-
remove(child) ,跟 forget() 一样
-
sash_coord(index)
- 返回一个二元组表示指定分割线的起点坐标
-
sash_dragto(index, x, y)
- 实现将指定的分割线拖拽到一个新的位置
- 与 sash_mark() 一起实现
-
sash_mark(index, x, y)
- 注册当前的鼠标位置
-
sash_place(index, x, y)
- 将指定分割线移动到一个新的位置