Python之tkinter面板PanedWindow的使用(tkinterhtml)学到了

随心笔谈2年前发布 admin
175 0 0

文章摘要

### 简要总结 PanedWindow 是 Tkinter 提供的一个面板控件,允许在一个容器中创建多个子控件,并按水平或垂直方向排列。以下是其核心内容: 1. **基本概念** - PanedWindow 是一个窗口控件,支持嵌套使用。 - 最常应用是将窗口分成多个子控件(如标签、LabelFrame 等),并根据需要调整子控件的大小和排列方向。 2. **构造方法** - `PanedWindow(父对象, options, ...)` - 参数包括: - `orient`:排列方向(默认为 horizontal,可选 vertical) - 其他参数如 `bd`(边界宽度)、`bd3D`、`cursor`、`handlepad`、`handlesize`、`height`、`opaque`、`resize` 等,用于控制外观和行为。 3. **插入子控件** - 使用 `add(child, options)` 方法插入子控件。 - 示例: ```python panedWindow.add(entry) ``` 4. **使用 weight 参数** - 通过 `add()` 方法指定 `weight` 参数,可调整子控件的权重,从而影响窗口缩放比例。 - 示例: ```python panedWindow.add(leftFrame, weight=1) panedWindow.add(centerFrame, weight=1) panedWindow.add(rightFrame, weight=1) ``` 5. **窗口大小调整** - 未使用 `weight` 时,窗口缩放仅影响最右边的控件。 - 使用 `weight` 可实现同比例缩放或调整子控件的大小比例。 6. **复杂示例** - 可嵌套使用 PanedWindow 创建更复杂的布局结构,并添加控件如 Scale、Scale 等。 总结:PanedWindow 提供了强大的布局和调整功能,适合创建多级窗口布局并灵活控制子控件的大小比例。



目录PanedWindow的基本概念插入子控件 add()建立LabelFrame 当做子对象tkinter.ttk 模块的weight 参数在PanedWindow 内插入不同的控件总结

PanedWindow可以翻译为面板,是一个Widget 控件,可以在此容器内建立任意数量的子控件,不过一般在此控件内建立两三个子控件,而控件是以水平方向或垂直方向排列。

它的构造方法语法如下:

PanedWindow(父对象, options, …)

参数:

第一个参数:父对象,表示这个面板将建立在哪一个窗口内第二个参数:,参数如下
参数含义bg 或 background当鼠标光标不在此控件上时,若是有滚动条或方向盒时,滚动条或方向盒的背景色彩bd3D显示时的宽度默认是2borderwidth边界线宽度默认是2cursor当鼠标光标在标签上方时的形状handlepad面板显示宽度默认是8handlesize面板显示大小默认是8height高度没有默认高度opaqueresize该选项定义了用户调整窗格尺寸的操作如果该选项的值为 True(默认),窗格的尺寸随用户鼠标的拖拽而改变如果该选项的值为 False,窗格的尺寸在用户释放鼠标的时候才更新到新的位置orient面板配置方向默认是HORIZONTALrelief可由此控制文字外框默认是relief=FLATsashcursor分割线光标,没有默认值sashpad设置每一条分割线到窗格间的间距sashrelief面板分隔线外框默认值是RAISEDsashwidth设置分割线的宽度showhandle滑块属性,可设定是否显示默认值为 Falsewidth面板整体宽度,没有默认值

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()

运行结果:

放大后

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’, 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()

运行结果:

如果我们单纯的根据上面的程序进行缩放,结果只有最右边一个变大或者变小

图片示例:

但是如果我们想要同比例缩放或放大呢?

我们可以在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()

运行结果:

例子:

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()

运行结果:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:Python GUI之tkinter窗口视窗教程大集合(推荐)python tkinter界面居中显示的方法在python tkinter界面中添加按钮的实例

© 版权声明

相关文章