PaneWindow(面板)为一 gm,用来管理子 Widget
向 PanedWindow 中添加 Pane
代码:
import tkinter as tk
# 使用add方法
root = tk.Tk()
panes = tk.PanedWindow(orient='vertical')
panes.pack(fill='both', expand=1)
for i in ['Label', 'Button', 'Checkbutton', 'Radiobutton']:
panes.add(eval('tk.'+i)(panes, text='hello'))
root.mainloop()
效果:
删除 PanedWindow 指定的 pane
代码:
import tkinter as tk
root = tk.Tk()
ws = []
panes = tk.PanedWindow(orient='vertical')
panes.pack(fill='both', expand=1)
# 创建四个 pane
for i in ['Label', 'Button', 'Checkbutton', 'Radiobutton']:
ws.append(eval('tk.'+i)(panes, text='hello'))
for i in ws:
panes.add(i)
# 从 panes 中删除包含子 Button 的 pane,使用 remove 与 forget 相同
panes.forget(ws[1])
root.mainloop()
效果:
只有三个 widget,Button 已被删除
在PanedWindow 指定位置添加一个 pane
代码:
import tkinter as tk
root = tk.Tk()
ws = []
panes = tk.PanedWindow(orient='vertical')
panes.pack(fill='both', expand=1)
# 创建四个 pane
for i in ['Label', 'Button', 'Checkbutton', 'Radiobutton']:
ws.append(eval('tk.'+i)(panes, text='hello'))
for i in ws:
panes.add(i)
# 注意被添加的 widget 是第一个参数,after 指定是位于那一个 widget 之后
panes.paneconfig(tk.Label(panes, text='world'), after=ws[0])
root.mainloop()
效果: