PanedWindow 的基本概念
PanedWindow可以翻译为面板,是一个Widget 控件,可以在此容器内建立任意数量的子控件,不过一般在此控件内建立两三个子控件,而控件是以水平方向或垂直方向排列。它的构造方法语法如下
PanedWindow(父对象, options, ...)
参数:
第一个参数:父对象,表示这个面板将建立在哪一个窗口内
第二个参数:options,参数如下
参数
含义
bg 或 background
当鼠标光标不在此控件上时,若是有滚动条或方向盒时,滚动条或方向盒的背景色彩
bd
3D显示时的宽度
默认是2
borderwidth
边界线宽度
默认是2
cursor
当鼠标光标在标签上方时的形状
handlepad
面板显示宽度
默认是8
handlesize
面板显示大小
默认是8
height
高度
没有默认高度
opaqueresize
该选项定义了用户调整窗格尺寸的操作
如果该选项的值为 True(默认),窗格的尺寸随用户鼠标的拖拽而改变
如果该选项的值为 False,窗格的尺寸在用户释放鼠标的时候才更新到新的位置
orient
面板配置方向
默认是HORIZONTAL
relief
可由此控制文字外框
默认是relief=FLAT
sashcursor
分割线光标,没有默认值
sashpad
设置每一条分割线到窗格间的间距
sashrelief
面板分隔线外框
默认值是RAISED
sashwidth
设置分割线的宽度
showhandle
滑块属性,可设定是否显示
默认值为 False
width
面板整体宽度,没有默认值
插入子控件 add()
add(child, options)
可以插入子控件
例子:
import tkinter
panedWindow = tkinter.PanedWindow(orient=tkinter.VERTICAL)
panedWindow.pack(fill=tkinter.BOTH, expand=True)
# 创建标签Top
top = tkinter.Label(panedWindow, text='Top')
panedWindow.add(top)
# 创建标签Bottom
bottom = tkinter.Label(panedWindow, text='Bottom')
panedWindow.add(bottom)
panedWindow.mainloop()
运行结果:
放大后
建立LabelFrame 当做子对象
PanedWindow 是一个面板,最常的应用是将它分成两三份,然后可以将所设计的控件适度分配位置。
例子:
import tkinter
root = tkinter.Tk()
panedWindow = tkinter.PanedWindow(orient=tkinter.HORIZONTAL)
panedWindow.pack(fill=tkinter.BOTH, expand=True)
leftFrame = tkinter.LabelFrame(panedWindow, text='Left', " alt="" />
tkinter.ttk 模块的weight 参数
如果我们单纯的根据上面的程序进行缩放,结果只有最右边一个变大或者变小
图片示例:
但是如果我们想要同比例缩放或放大呢?
我们可以在add()方法内使用weight参数,但是使用这个需要导入tkinter.ttk
例子:
from tkinter import *
from tkinter.ttk import *
root = Tk()
panedWindow = PanedWindow(orient=HORIZONTAL)
panedWindow.pack(fill=BOTH, expand=True)
leftFrame = LabelFrame(panedWindow, text='Left', " alt="" />
如果三个子对象设置不同的 weight,更改窗口大小时,会产生不同的效果
例子:
from tkinter import *
from tkinter.ttk import *
root = Tk()
panedWindow = PanedWindow(orient=HORIZONTAL)
panedWindow.pack(fill=BOTH, expand=True)
leftFrame = LabelFrame(panedWindow, text='Left', " alt="" />
在PanedWindow 内插入不同的控件
例子:
import tkinter
panedWindow = tkinter.PanedWindow(orient=tkinter.HORIZONTAL)
panedWindow.pack(fill=tkinter.BOTH, expand=True)
entry = tkinter.Entry(panedWindow, bd=3)
panedWindow.add(entry)
# 在panedWindow内创建PanedWindow子对象,名叫panedWindowIn
panedWindowIn = tkinter.PanedWindow(panedWindow, orient=tkinter.VERTICAL)
panedWindow.add(panedWindowIn)
# 在panedWindowIn创建尺度条
scale = tkinter.Scale(panedWindowIn, orient=tkinter.HORIZONTAL)
panedWindowIn.add(scale)
panedWindow.mainloop()
运行结果:
谢谢观看,笔者会持续更新,如有错误或者建议,请私信我