如何正确嵌套多个 ttk.PanedWindow 一个?

问题描述

我想制作带有 2 个条形的 UI,可以用鼠标抓取这些条形并拖动它们以调整小部件的大小。

为什么不显示嵌套的 ttk.PanedWindow?在这个例子中,需要做什么才能在屏幕上显示标签 1 和 2?

import tkinter as tk
from tkinter import ttk


root = tk.Tk()
root.bind('<Escape>',lambda e:root.quit())

paned_v = ttk.PanedWindow(root,orient=tk.VERTICAL)
paned_v.add(tk.Label(root,text='1'))
paned_v.add(tk.Label(root,text='2'))
paned_v.pack(fill=tk.BOTH,expand=True)

paned_h = ttk.PanedWindow(root,orient=tk.HORIZONTAL)
paned_h.add(tk.Label(root,text='3'))
paned_h.add(paned_v)
paned_h.pack(fill=tk.BOTH,expand=True)

root.mainloop()

解决方法

窗格需要是窗格小部件的子级。如果您希望 pane_vpaned_h 管理,那么它需要是 paned_h 的子项,并且您不应该调用 paned_v.pack(),因为它由 {{} 管理1}}。

pane_h

严格来说,这不是必需的。但是,这是确保堆叠顺序正确的最简单方法。