python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > tkinter布局

tkinter高级布局之PanedWindow和notebook详解

作者:微小冷

本文主要介绍了tkinter中的两种布局控件,分别是可以动态划分子控件的PanedWindow,和提供了选项卡工具的notebook,感兴趣的小伙伴可以学习一下

tkinter传统的布局工具就是Frame,顶多算上LabelFrame,然后运用place, grid和pack,来排满一张窗口,其他的就没有了。接下来要介绍的两种布局控件,或者说是容器比较恰当,分别是可以动态划分子控件的PanedWindow,和提供了选项卡工具的otebook,其中后者只存在于tkinter.ttk中。

PanedWindow

PanedWindow可以理解为是更加高级的窗口或者Frame,在PanedWindow中,其子控件可以自由拖动边框。这个控件在tkinter和tkinter.ttk中都有,下面用ttk为示例

import tkinter as tk
import tkinter.ttk as ttk
pw = ttk.PanedWindow(orient='horizontal')
pw.pack(fill="both", expand=1)
pw.add(ttk.LabelFrame(pw, text="left"))
pw.add(ttk.LabelFrame(pw, text="right"))
tk.mainloop()

效果如下

在PaneWindow中,除了设置宽高的height, width,背景色bg,边框宽度bd,鼠标样式cursor,边框样式relief这些通用参数外,主要参数如下

参数
showhandle为True时显示方形手柄
handlepad手柄位置,默认8像素
handlesize手柄边长,默认8像素
opaqueresize默认为True,窗格的尺寸随用户鼠标的拖拽而实时变化;如设为False,则只有在松开鼠标后,窗格尺寸才发生变化。
orient窗格分布方式,可选 horizontal(横向)和 vertical(纵向)
sashpad设置每一条分割线到窗格间的间距
sashrelief分割线样式,默认"flat",可选"sunken",“raised”,“groove” 或 “ridge”
sashwidth设置分割线的宽度

notebook

选项卡也是非常实用的布局利器,有了这个,可以让窗口可以插入更多的内容,简单示例如下

nt = ttk.Notebook()
lf1 = ttk.LabelFrame(nt, text="选项卡1", labelanchor='n')
nt.add(lf1, text='选项卡1')
lf2 = ttk.LabelFrame(nt, text="选项卡2", labelanchor='n')
nt.add(lf2, text='选项卡2')
nt.pack(fill=tk.BOTH, expand=True)
tk.mainloop()

效果如下

其中add函数可以添加新的选项卡,除了待添加控件之外,其主要参数如下

参数
text选项卡中标题
compound当选项卡内同时含图像和文字时,彼此之间的位置关系
image选项卡以图像方式呈现
padding内边距
state选项卡状态,可选normal、disabled、hidden
sticky指出子窗口面板的配置方式,可选nsew,表示南北东西
underline指出第几个字母含下划线,从0开始计算的索引

到此这篇关于tkinter高级布局之PanedWindow和notebook详解的文章就介绍到这了,更多相关tkinter布局内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文