在框架内放置 Tkinter 小部件的问题

Issue with placing Tkinter widgets within frame

我刚开始使用 Tkinter,但遇到了一个非常简单的问题,这让我抓狂。我试图在标签框架内放置一个按钮。这是一个非常简单的任务,网上有很多教程。只需创建按钮并将框架指定为父级即可。然后使用 pack 命令将小部件打包到其父级中。但是,当我这样做时,按钮 - 或任何小部件 - 始终位于父级之下。无论我使用 pack 还是 grid,子 widget 总是在它下面。 Refer to this image

from tkinter import *

application = Tk()
lblframe = LabelFrame(application, width=300, height=300, text="Test", bd=10).pack()
btn = Button(lblframe, text="Button 1").pack()
application.mainloop()

pack()返回的值为None。因此,您正在分配 lblframe 以保存 None 的值,因此当您创建 Button 小部件时,它已将 None 作为父级传递。这导致它的父级成为应用程序的顶层,因此您看到的是打包(两个小部件都打包到同一个容器中)。如果您分别进行创建和打包,它将按您预期的方式工作,例如:

from tkinter import *

application = Tk()
lblframe = LabelFrame(application, width=300, height=300, text="Test", bd=10)
btn = Button(lblframe, text="Button 1")
lblframe.pack()
btn.pack()
application.mainloop()