Tkinter中Notebook组件添加Entry输入框无法正常运行问题求助
Tkinter Notebook组件输入框添加异常解决方案
问题根因
代码的核心错误是:添加到Notebook中的子框架不需要手动调用pack()布局方法,Notebook的add()方法会自动管理内部子容器的布局,提前对frame1、frame2执行pack操作,会直接破坏Notebook的内部布局逻辑,导致后续添加的输入框被挤压无法正常显示。
核心修改点
- 删除原本对
frame1、frame2调用的pack()代码,这两行是布局异常的根源 - 给
notebook.pack()补充fill='both'参数,保证窗口拉伸时Notebook可以正常自适应填充可用空间
修正后可运行代码
import tkinter as tk from tkinter import ttk root = tk.Tk() root.title("Lizard Notebook") root.geometry('600x400+50+50') root.resizable(True, True) root.minsize(400, 400) notebook = ttk.Notebook(root) notebook.pack(expand=True, fill='both') frame1 = ttk.Frame(notebook, width=1000, height=500) frame2 = ttk.Frame(notebook, width=1000, height=500) notebook.add(frame1, text='Notebook') notebook.add(frame2, text='Options') entry = ttk.Entry(root, width=40) entry.focus_set() entry.pack(pady=5) root.mainloop()
补充说明
如果你需要把输入框放到Notebook的某个标签页内,只需要修改输入框的父容器即可,比如要放到Options标签页里,把输入框定义改为:
entry = ttk.Entry(frame2, width=40)
即可正常在对应标签页显示输入框。
内容的提问来源于stack exchange,提问作者Marcel Zagórski
相关产品推荐
相关产品推荐

