如何在Tkinter的Canvas小部件中放置一个小部件(widget)?

4

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

我想将我的GUI分成左、中、右三个部分。在每个部分内,我希望能够放置小部件,如:CheckbuttonButtonLabel等。

如何在Canvas小部件中放置其他小部件?

1个回答

6
你的选择取决于你真正想要实现什么。使用画布相比框架有何优势?
你可以像在其他容器中一样使用pack、grid或place轻松地向画布添加窗口部件。这样做的好处是,当你滚动画布时,这些项目不会滚动,因为它们实际上不是画布的一部分。
另一种选择是在画布上创建窗口对象。你可以使用canvas的create_window方法来完成这个过程。好处是,这个窗口成为画布的一部分,将随着画布上的任何其他对象一起滚动。缺点是,你的唯一选项是绝对位置,并且必须显式控制小部件的大小。

我决定使用框架小部件。网格可以针对特定的框架吗,而不是主“框架”? - thenickname
@thenickname:我不明白你的问题。Grid是一种几何管理器,适用于每个小部件。您可以在主窗口、子框架、画布等中使用网格。 - Bryan Oakley
我曾经认为,如果您将网格应用于框架,则该网格地址将唯一适用于该框架。此外,在主控中创建的任何框架都将受制于主控网格中的坐标。这是真的吗? - thenickname
@thenickname:不,不是这样的(虽然我不完全理解你说的话)。任何容器(顶层窗口、框架等)都需要一个几何管理器来管理其子元素。每个容器的几何管理器都是独立的。因此,主窗口可以使用网格或包装几何管理器,内部框架可以使用网格或包装几何管理器,并且每个管理器都有不同的“地址”。您可以将某些内容放在子框架的第1行第1列中,将另一些内容放在主窗口的第1行第1列中,它们将位于两个不同的位置。 - Bryan Oakley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接