Python tkinter -- 第17章PanedWindow

时间:2024-10-22 22:51:01

第17章PanedWindow
PanedWindow(窗格)支持创建1个或者多个子窗口的窗口布局管理控件。可以使用鼠标拖动分割线来改变子窗口的大小。PanedWindow是Tk8.4后加入的新控件,与Frame控件类似都是提供一个框架给组件。不过窗格控件可以动态的调整子窗口的大小。

import tkinter as tk
from tkinter import ttk

root=()
('320x240')
b1=(showhandle=True,
                  sashrelief=)
left=(b1,text='左边窗口')
(left)
right=(b1,text='右边窗口')
(right)
(fill=,expand=1)
()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

结果:
在这里插入图片描述
17.1 属性

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

17.1.2 borderwidth(bd)
设置窗格控件的外框宽度。

import tkinter as tk
from tkinter import ttk

root=()
('320x240')
b1=(showhandle=True,
                  sashrelief=,bg='blue',
                  width=240,border=30)
left=(b1,width=5)
(left)
right=(b1,width=5)
(right)
()
()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

结果:
在这里插入图片描述
17.1.3 cursor
鼠标经过窗格控件时的形状。具体的cursor介绍请见3.3.6节。

import tkinter as tk
from tkinter import ttk

root=()
('320x240')
b1=(showhandle=True,
                  sashrelief=,
                  width=240,cursor='spider')
left=(b1,width=5)
(left)
right=(b1,width=5)
(right)
()
()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

17.1.4 handlepad
调节“手柄”的位置
例如orient=VERTICAL,则handlepad选项表示“分割线”上的手柄与左端的距离,如果是orient=HORIZONTAL,那么距离就是手柄与上端的距离。默认的距离是8像素。

import tkinter as tk
from tkinter import ttk

root=()
('320x240')
b1=(showhandle=True,
                  sashrelief=,
                  width=240,handlepad=30)
left=(b1,height=5,width=5)
(left)
right=(b1,height=5,width=5)
(right)
()
()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

结果:
在这里插入图片描述
17.1.5 handlesize
定义手柄的大小。默认大小是8像素。

import tkinter as tk
from tkinter import ttk

root=()
('320x240')
b1=(showhandle=True,
                  sashrelief=,
                  width=240,handlepad=30,
                  handlesize=20)
left=(b1,height=5,width=5)
(left)
right=(b1,height=5,width=5)
(right)
()
()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

结果:
在这里插入图片描述
17.1.6 height
定义窗格的高度。如果没有定义该选项,窗格的高度由高度最大的子组件决定。

import tkinter as tk
from tkinter import ttk
root=()
('320x240')
b1=(showhandle=True,
                  sashrelief=,
                  width=240,height=200)
left=(b1,height=5,width=5)
(left)
right=(b1,height=5,width=5)
(right)
()
()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

结果:
在这里插入图片描述
17.1.7 opaqueresize
设置拖动效果。如果opaqueresize=True,则支持拖动效果,就是窗格中的子组件的大小随着分隔条的变动而改变。如果opaqueresize=False,那么只有当鼠标键释放的时候才改变子组件的大小,也就是没有拖动效果。

import tkinter as tk
from tkinter import ttk

root=()
('320x240')
b1=(showhandle=True,sashrelief=,
                  width=240,opaqueresize=False)
left=(b1,height=5,width=5)
(left)
right=(b1,height=5,width=5)
(right)
()
()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

结果:
在这里插入图片描述
17.1.8 orient
定义窗格的分布方向。有HORIZONTAL(横向分布)和VERTICAL(纵向分布)两种。
17.1.9 relief
指定边框样式。参见3.3.5节的说明。
17.1.10 sashcursor
调整分隔条时的光标样式。

import tkinter as tk
from tkinter import ttk

root=()
('320x240')
b1=(showhandle=True,
                  sashrelief=,
                  width=240,sashcursor='spider')
left=(b1,height=5,width=5)
(left)
right=(b1,height=5,width=5)
(right)
()
()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

结果:
在这里插入图片描述
17.1.11 sashpad
设置分隔线两边的空白大小,就是到子组件的距离。默认是0。

import tkinter as tk
from tkinter import ttk

root=()
('320x240')
b1=(showhandle=True,sashrelief=,
                  width=240,sashpad=20)
left=(b1,height=5,width=5)
(left)
right=(b1,height=5,width=5)
(right)
()
()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

结果:
在这里插入图片描述
17.1.12 sashrelief
设置分隔线的3D样式。有:FLAT,SUNKEN,RAISED,GROOVED或RIDGE。如果是FLAT,不会有分隔线显示,因为和背景是一样的。
17.1.13 sashwidth
设置分隔线的宽度。

import tkinter as tk
from tkinter import ttk

root=()
('320x240')
b1=(showhandle=True,sashrelief=,
                  width=240,sashwidth=20)
left=(b1,height=5,width=5)
(left)
right=(b1,height=5,width=5)
(right)
()
()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

结果:
在这里插入图片描述
17.1.14 showhandle
是否显示调节手柄。Showhandle=True则显示,否则不显示。

17.1.15 width
定义窗口框控件的宽度。如果没有此参数,则根据子组件的宽度来决定窗格控件的宽度。