【tkinter组件专栏】PanedWindow:*放飞的多窗格

时间:2024-10-23 08:50:22

在这里插入图片描述

文章目录

  • 一、组件简介
  • 二、运用实例
    • 1. 两窗格 PanedWindow
    • 3. 三窗格 PanedWindow
  • 三、参数方法
    • 1. 参数汇总
    • 2. 方法汇总


一、组件简介

PanedWindow 组件,多窗格窗口(我自己翻译的…),它是tkinter中的一个空间管理组件,能够根据需要划分出多个空间窗格

PanedWindow 跟 Frame 组件类似的功能,都能够提供一个框架,但是 PanedWindow 更强的是能够形成多个框架空间,在屏幕上生成一个独立地窗格,并且用户还可以*调整窗格大小
在这里插入图片描述
在这里插入图片描述

二、运用实例

——

1. 两窗格 PanedWindow

首先我们来创建一个2个窗格的 PanedWindow ,来初步感受一下它的使用。

import tkinter as tk 

root = tk.Tk()

pw = tk.PanedWindow(sashrelief='sunken')  # 设置分割线样式为sunken
pw.pack(fill='both', expand=True)

left = tk.Label(pw, text="左窗格")
pw.add(left)  # 添加子组件 left

right = tk.Label(pw, text='右窗格')
pw.add(right)  # 添加子组件 right

root.mainloop()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

运行程序来感受一下,我们会发现屏幕中生成了两个窗格,拖动中间的分割线,还能够任意改变左右两个窗格的大小。

在这里插入图片描述
关于代码部分,还是有需要强调的

  1. 默认情况下生成的 PandeWindow 就是像上图一样左右分隔的两个窗格,如果要生成上下分隔的窗格,需要设置参数 orient='vertical'
  2. 参数 sashrelief='sunken' 表示设置窗格之间的分割线为’sunken’样式,sashrelief 可以设置的为:flat(默认)、sunken、raised、groove以及ridge
  3. 利用 add() 方法,我们可以将其他组件添加到 PanedWindow 的窗格里

——

3. 三窗格 PanedWindow

既然我们了解了 PanedWindow 的基础用法,接下来我们来学习如何创建三窗格。
在这里插入图片描述

因为你一旦知道了怎么创建三窗格,那么四窗格、五窗格……都是一模一样的方法。

import tkinter as tk 

root = tk.Tk()

# 首先创建左右分布的2窗格
pw1 = tk.PanedWindow(sashrelief='sunken')
pw1.pack(fill='both', expand=True)

# 左边的窗格添加Label组件
left = tk.Label(pw1, text="左窗格")
pw1.add(left)

# 再创建一个上下分布的2窗格
pw2 = tk.PanedWindow(orient='vertical',sashrelief='raised')
# 将pw2放在pw1上
pw1.add(pw2)

# 在pw2中,上窗格添加Label组件
top = tk.Label(pw2, text='顶窗格')
pw2.add(top)

# 在pw2中,下窗格添加Label组件
bottom = tk.Label(pw2, text='底窗格')
pw2.add(bottom)

root.mainloop()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

运行程序,我们看看生成是不是像上面图片画的那样。
在这里插入图片描述
本质上其实很好理解,就是把一个 PanedWindow 当成子组件放在另一个 PanedWindow 上面。

通过这样一个又一个 PanedWindow 的叠加,同时调节各个窗格的大小,从而可以生成任意样式的多窗格的。在这里插入图片描述

三、参数方法

——

1. 参数汇总

总结一下 PanedWindow 组件中常用的参数以及用法
在这里插入图片描述
——

2. 方法汇总

add(child, **options)

  • 添加一个新的子组件到窗格中
  • 下方表格列举了各个 options 选项具体含义:
    在这里插入图片描述

forget(child)

  • 删除一个子组件

identify(x, y)

  • 给定一个坐标(x, y),返回该坐标所在的元素名称
  • 如果该坐标位于子组件上,返回空字符串
  • 如果该坐标位于分割线上,返回一个二元组(n, ‘sash’),n 为 0 表示第一个分割线
  • 如果该坐标位于手柄上,返回一个二元组(n, ‘handle’),n 为 0 表示第一个手柄

panecget(child, option)

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

paneconfig(child, **options)

  • 设置子组件的各种选项
  • 下方表格列举了各个 options 选项具体含义:
    在这里插入图片描述

paneconfigure(child, **options)

  • 跟 paneconfig() 一样

panes()

  • 将子组件以列表的形式返回

remove(child)

  • 跟 forget() 一样

sash_coord(index)

  • 返回一个二元组表示指定分割线的起点坐标

sash_dragto(index, x, y)

  • 实现将指定的分割线拖拽到一个新的位置
  • 与 sash_mark() 一起实现

sash_mark(index, x, y)

  • 注册当前的鼠标位置

sash_place(index, x, y)

  • 将指定分割线移动到一个新的位置

在这里插入图片描述在这里插入图片描述