文章目录
- PanedWindow
- notebook
tkinter系列:
- GUI初步💎布局💎绑定变量💎绑定事件💎消息框💎文件对话框
- Frame控件💎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开始计算的索引 |