Python tkinter -- 第17章PanedWindow

52 篇文章 129 订阅

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

import tkinter as tk
from tkinter import ttk

root=tk.Tk()
root.geometry('320x240')
b1=tk.PanedWindow(showhandle=True,
                  sashrelief=tk.SUNKEN)
left=tk.Label(b1,text='左边窗口')
b1.add(left)
right=tk.Label(b1,text='右边窗口')
b1.add(right)
b1.pack(fill=tk.BOTH,expand=1)
root.mainloop()

结果:
在这里插入图片描述
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=tk.Tk()
root.geometry('320x240')
b1=tk.PanedWindow(showhandle=True,
                  sashrelief=tk.SUNKEN,bg='blue',
                  width=240,border=30)
left=tk.Entry(b1,width=5)
b1.add(left)
right=tk.Entry(b1,width=5)
b1.add(right)
b1.pack()
root.mainloop()

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

import tkinter as tk
from tkinter import ttk

root=tk.Tk()
root.geometry('320x240')
b1=tk.PanedWindow(showhandle=True,
                  sashrelief=tk.SUNKEN,
                  width=240,cursor='spider')
left=tk.Entry(b1,width=5)
b1.add(left)
right=tk.Entry(b1,width=5)
b1.add(right)
b1.pack()
root.mainloop()

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

import tkinter as tk
from tkinter import ttk

root=tk.Tk()
root.geometry('320x240')
b1=tk.PanedWindow(showhandle=True,
                  sashrelief=tk.SUNKEN,
                  width=240,handlepad=30)
left=tk.Text(b1,height=5,width=5)
b1.add(left)
right=tk.Text(b1,height=5,width=5)
b1.add(right)
b1.pack()
root.mainloop()

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

import tkinter as tk
from tkinter import ttk

root=tk.Tk()
root.geometry('320x240')
b1=tk.PanedWindow(showhandle=True,
                  sashrelief=tk.SUNKEN,
                  width=240,handlepad=30,
                  handlesize=20)
left=tk.Text(b1,height=5,width=5)
b1.add(left)
right=tk.Text(b1,height=5,width=5)
b1.add(right)
b1.pack()
root.mainloop()

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

import tkinter as tk
from tkinter import ttk
root=tk.Tk()
root.geometry('320x240')
b1=tk.PanedWindow(showhandle=True,
                  sashrelief=tk.SUNKEN,
                  width=240,height=200)
left=tk.Text(b1,height=5,width=5)
b1.add(left)
right=tk.Text(b1,height=5,width=5)
b1.add(right)
b1.pack()
root.mainloop()

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

import tkinter as tk
from tkinter import ttk

root=tk.Tk()
root.geometry('320x240')
b1=tk.PanedWindow(showhandle=True,sashrelief=tk.SUNKEN,
                  width=240,opaqueresize=False)
left=tk.Text(b1,height=5,width=5)
b1.add(left)
right=tk.Text(b1,height=5,width=5)
b1.add(right)
b1.pack()
root.mainloop()

结果:
在这里插入图片描述
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=tk.Tk()
root.geometry('320x240')
b1=tk.PanedWindow(showhandle=True,
                  sashrelief=tk.SUNKEN,
                  width=240,sashcursor='spider')
left=tk.Text(b1,height=5,width=5)
b1.add(left)
right=tk.Text(b1,height=5,width=5)
b1.add(right)
b1.pack()
root.mainloop()

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

import tkinter as tk
from tkinter import ttk

root=tk.Tk()
root.geometry('320x240')
b1=tk.PanedWindow(showhandle=True,sashrelief=tk.SUNKEN,
                  width=240,sashpad=20)
left=tk.Text(b1,height=5,width=5)
b1.add(left)
right=tk.Text(b1,height=5,width=5)
b1.add(right)
b1.pack()
root.mainloop()

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

import tkinter as tk
from tkinter import ttk

root=tk.Tk()
root.geometry('320x240')
b1=tk.PanedWindow(showhandle=True,sashrelief=tk.SUNKEN,
                  width=240,sashwidth=20)
left=tk.Text(b1,height=5,width=5)
b1.add(left)
right=tk.Text(b1,height=5,width=5)
b1.add(right)
b1.pack()
root.mainloop()

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

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

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值