这篇教程Python之tkinter面板PanedWindow的使用写得很实用,希望能帮到您。
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()可以插入子控件 例子: import tkinterpanedWindow = tkinter.PanedWindow(orient=tkinter.VERTICAL)panedWindow.pack(fill=tkinter.BOTH, expand=True)# 创建标签Toptop = tkinter.Label(panedWindow, text='Top')panedWindow.add(top)# 创建标签Bottombottom = tkinter.Label(panedWindow, text='Bottom')panedWindow.add(bottom)panedWindow.mainloop() 运行结果: 
放大后 
建立LabelFrame 当做子对象PanedWindow 是一个面板,最常的应用是将它分成两三份,然后可以将所设计的控件适度分配位置。 例子: import tkinterroot = tkinter.Tk()panedWindow = tkinter.PanedWindow(orient=tkinter.HORIZONTAL)panedWindow.pack(fill=tkinter.BOTH, expand=True)leftFrame = tkinter.LabelFrame(panedWindow, text='Left', width=120, height=150)panedWindow.add(leftFrame)centerFrame = tkinter.LabelFrame(panedWindow, text='Center', width=120, height=150)panedWindow.add(centerFrame)rightFrame = tkinter.LabelFrame(panedWindow, text='Right', width=120, height=150)panedWindow.add(rightFrame)panedWindow.mainloop() 运行结果: 
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', width=120, height=150)panedWindow.add(leftFrame, weight=1)centerFrame = LabelFrame(panedWindow, text='Center', width=120, height=150)panedWindow.add(centerFrame, weight=1)rightFrame = LabelFrame(panedWindow, text='Right', width=120, height=150)panedWindow.add(rightFrame, weight=1)panedWindow.mainloop() 运行结果: 
如果三个子对象设置不同的 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', width=120, height=150)panedWindow.add(leftFrame, weight=2)centerFrame = LabelFrame(panedWindow, text='Center', width=120, height=150)panedWindow.add(centerFrame, weight=2)rightFrame = LabelFrame(panedWindow, text='Right', width=120, height=150)panedWindow.add(rightFrame, weight=1)panedWindow.mainloop() 运行结果: 
在PanedWindow 内插入不同的控件例子: import tkinterpanedWindow = tkinter.PanedWindow(orient=tkinter.HORIZONTAL)panedWindow.pack(fill=tkinter.BOTH, expand=True)entry = tkinter.Entry(panedWindow, bd=3)panedWindow.add(entry)# 在panedWindow内创建PanedWindow子对象,名叫panedWindowInpanedWindowIn = tkinter.PanedWindow(panedWindow, orient=tkinter.VERTICAL)panedWindow.add(panedWindowIn)# 在panedWindowIn创建尺度条scale = tkinter.Scale(panedWindowIn, orient=tkinter.HORIZONTAL)panedWindowIn.add(scale)panedWindow.mainloop() 运行结果: 
总结以上为个人经验,希望能给大家一个参考,也希望大家多多支持wanshiok.com。 基于tkinter中ttk控件的width-height设置方式 Python提高运维效率的脚本分享 |