鱼c笔记——Python 的 GUI 编程(十四):Tkinter 的组件 PanedWindow

时间:2024-10-23 08:48:46

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

目录

何时使用 PanedWindow 组件?

用法

参数

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

方法

add(child, **options)

forget(child)

identify(x, y)

panecget(child, option)

panecget(child, option)

paneconfig(child, **option)


何时使用 PanedWindow 组件?

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

用法

  1. from tkinter import *
  2. m = PanedWindow(orient=VERTICAL)
  3. (fill=BOTH, expand=1)
  4. top = Label(m, text='top pane')
  5. (top)
  6. bottom = Label(m, text='bottom pane')
  7. (bottom)
  8. #拖拽鼠标的左键可以改变布局
  9. #中间有条隐藏的线,是二窗格
  10. mainloop()

  1. #创建一个三窗格
  2. from tkinter import *
  3. m1 = PanedWindow() #默认是左右分布的
  4. (fill=BOTH, expand=1)
  5. left = Label(m1, text='left pane')
  6. (left)
  7. m2 = PanedWindow(orient=VERTICAL)
  8. (m2)
  9. top = Label(m2, text='top pane')
  10. (top)
  11. bottom = Label(m2, text='bottom pane')
  12. (bottom)
  13. mainloop()

  1. #显示手柄和分割线
  2. from tkinter import *
  3. m1 = PanedWindow(showhandle=True, sashrelief=SUNKEN) #默认是左右分布的
  4. (fill=BOTH, expand=1)
  5. left = Label(m1, text='left pane')
  6. (left)
  7. m2 = PanedWindow(orient=VERTICAL, showhandle=True, sashrelief=SUNKEN)
  8. (m2)
  9. top = Label(m2, text='top pane')
  10. (top)
  11. bottom = Label(m2, text='bottom pane')
  12. (bottom)
  13. mainloop()
  14. #分割线上的类似正方形的东西就是handle

参数

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

master--父组件

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

选项 含义
background 设置背景颜色
bg 跟background一样
borderwidth 设置边框宽度
bd 跟borderwidth一样
cursor

指定当鼠标在PanedWindow上飘过的时候的鼠标样式

默认值由系统指定

handlepad

调节“手柄”的位置

例如orient=VERTICAL,则handlepad选项表示“分割线”上的手柄与左端的距离

默认值是8像素

handlesize

设置“手柄”的尺寸(由于“手柄”必须是一个正方形,所以是设置正方形的边长)

默认值是8像素

height

设置PanedWindow的高度

如果忽略该选项,则高度由子组件的尺寸决定

opaqueresize

该选项定义了用户调整窗格尺寸的操作

如果该选项的值为True(默认),窗格的尺寸随用户鼠标的拖拽而改变

如果该选项的值为False,窗格的尺寸在用户释放鼠标的时候才更新到新的位置

orient

指定窗格的分布方式

可以是HORIZONTAL(横向分布)和VERTICAL(纵向分布)

relief

指定边框样式

默认值是FLAT

另外你还可以设置SUNKEN,RAISED,GROOVED或RIDGE

sashpad 设置每一条分割线到窗格间的间距
sashrelief

设置分割线的样式

默认值是FLAT

另外你还可以设置SUNKEN,RAISED,GROOVED或RIDGE

sashwidth 设置分割线的宽度
showhandle

设置是否显示调节窗格的手柄

默认值为False

width

设置PanedWindow的宽度

如果忽略该选项,则高度由子组件的尺寸决定

 

方法

add(child, **options)

--添加一个新的子组件到窗格中

--下方表格列举了各个 options 选项的具体含义

选项 含义
after 添加新的子组件到指定子组件后边
before 添加新的子组件到指定子组件前边
height 指定子组件的高度
minsize

该选项控制窗格不得低于的值

如果orient=HORIZONTAL,表示窗格的宽度不得低于该选项的值

如果orient=VERTICAL,表示窗格的高度不得低于该选项的值

padx 指定子组件的水平间距
pady 指定子组件的垂直间距
sticky

当窗格的尺寸大于子组件时,该选项指定子组件位于窗格的位置

可选的值有:E、S、W、N(东南西北)以及他们的组合值

width 指定子组件的宽度

 

forget(child)

--删除一个子组件

 

identify(x, y)

--给定一个坐标 (x, y),返回该坐标所在的元素名称

--如果该坐标位于子组件上,返回空字符串

--如果该坐标位于分割线上,返回一个二元组 (n, 'sash'),n 为 0 表示第一个分割线

--如果该坐标位于手柄上,返回一个二元组 (n, 'handle'),n 为 0 表示第一个手柄

 

panecget(child, option)

--获得子组件指定选项的值

 

panecget(child, option)

--获得子组件指定选项的值

 

paneconfig(child, **option)

--设置子组件的各种选项

--下面列举了各个 options 选项具体含义

after:添加新的子组件到指定子组件后边

before:添加新的子组件到指定子组件前边

height:指定子组件的高度