You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Tkinter的Notebook使用.place布局时子控件不可见问题求助

问题根源

Tkinter的place布局管理器不会触发父控件的自动尺寸计算逻辑。你代码中作为标签页载体的两个objTTK.Frame实例(objSummaryTab、objSettingsTab)没有显式指定宽高,默认尺寸为0*0,所以内部用place摆放的Label自然无法渲染显示。
改用pack布局可以正常显示,是因为pack会自动计算子控件的总尺寸,反向撑开父Frame的大小,所以没有尺寸为0的问题。

解决方案

方案1:显式指定固定尺寸

创建标签页Frame时直接指定width和height参数,适配你的主窗口尺寸即可,修改后完整可运行代码如下:

import tkinter as objTK
from tkinter import ttk as objTTK

root = objTK.Tk()
root.title("Tab Widget")
# 先给Notebook指定对应尺寸,避免显示异常
tabControl = objTTK.Notebook(root, width=480, height=450)
  
# 给每个标签页Frame设置和Notebook匹配的宽高
objSummaryTab = objTTK.Frame(tabControl, width=480, height=450)
objSettingsTab = objTTK.Frame(tabControl, width=480, height=450)
  
tabControl.add(objSummaryTab, text ='Summary')
tabControl.add(objSettingsTab, text ='Settings')
  
lb1 = objTTK.Label(objSummaryTab, text ="Summary")
lb1.place(x=5, y=5)  
          
lb2 = objTTK.Label(objSettingsTab, text ="Settings")
lb2.place(x=5, y=5) 

tabControl.place(x=5, y=5)

root.bind("<Escape>", lambda _: root.destroy())

root.geometry("500x500")

root.mainloop()

方案2:绑定事件动态适配尺寸

如果需要标签页跟随窗口/Notebook的大小自动调整,可以给tabControl绑定<Configure>事件,动态修改所有标签页的尺寸,不需要写死固定值,新增绑定逻辑的代码如下:

# 定义尺寸调整函数
def adjust_tab_size(event):
    # 遍历所有标签页,同步调整尺寸匹配Notebook的可用区域
    for tab_id in tabControl.tabs():
        tab_widget = tabControl.nametowidget(tab_id)
        tab_widget.config(width=event.width, height=event.height)

# 在tabControl定义完成后添加绑定
tabControl.bind("<Configure>", adjust_tab_size)

内容的提问来源于stack exchange,提问作者Sandeep S D

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 18:48:00