Python 如何在Tkinter的画布小部件中放置小部件?

Python 如何在Tkinter的画布小部件中放置小部件?,python,python-3.x,widget,tkinter-canvas,Python,Python 3.x,Widget,Tkinter Canvas,我基本上希望能够使用Canvas作为其他小部件的元容器 我想将我的GUI分为左侧、中间和中间部分。在每个部分中,我希望能够放置一些小部件,如:Checkbutton、Button、Label,等等 如何在画布小部件中放置小部件?您的选择取决于您真正想要实现的目标。为什么使用画布比使用框架更可取 使用pack、grid或place,您可以像添加任何其他容器一样轻松地将小部件添加到画布。执行此操作时,滚动画布时项目不会滚动,因为它们实际上不是画布的一部分 另一种选择是在画布上创建窗口对象。您可以使用

我基本上希望能够使用
Canvas
作为其他小部件的元容器

我想将我的GUI分为左侧、中间和中间部分。在每个部分中,我希望能够放置一些小部件,如:
Checkbutton
Button
Label
,等等


如何在画布小部件中放置小部件?

您的选择取决于您真正想要实现的目标。为什么使用画布比使用框架更可取

使用pack、grid或place,您可以像添加任何其他容器一样轻松地将小部件添加到画布。执行此操作时,滚动画布时项目不会滚动,因为它们实际上不是画布的一部分


另一种选择是在画布上创建窗口对象。您可以使用canvas的
create\u窗口
方法执行此操作。优点是,此窗口成为画布的一部分,并将与画布上的任何其他对象一起滚动。缺点是,您唯一的选择是绝对位置,您必须明确控制小部件的大小。

我决定改为使用框架小部件。网格是否可以特定于一个框架(相对于主“框架”)?@thenickname:我不明白你的问题。Grid是一个几何体管理器,可用于每个小部件。您可以在主窗口、子框架、画布等中使用网格。我的印象是,如果要将网格应用于框架,网格地址将是该框架的唯一地址。此外,在主栅格中创建的任何帧都将受制于主栅格中的坐标。这是真的吗?@thenickname:不,不是真的(尽管我不完全理解你说的话)。任何容器(顶级窗口、框架等)都需要几何体管理器来管理其子容器。每个容器的几何图形管理器都是不同的。因此,主窗口可以使用网格或包几何体管理器,内部框架可以使用网格或包几何体管理器,并且每个框架都有不同的“地址”。您可以在子帧的第1行第1列中放置一些内容,在主帧的第1行第1列中放置一些不同的内容,这些内容将位于两个不同的位置。