Python 如何将小部件放置在另一个小部件位置的基础上?

Python 如何将小部件放置在另一个小部件位置的基础上?,python,tkinter,Python,Tkinter,我想动态地放置我的小部件。如果我改变一个小部件的位置,所有其他小部件也应该被移动 我尝试了类似的方法,但测试并没有按照我的要求正确显示。它在我的输入小部件的左侧,但我希望它+20px添加到TypEntry canvas=tk.Canvasroot,高度=500,宽度=300 帆布包装 TypEntry=tk.Entryroot,宽度=10 TypEntry.pack TypEntry.placex=xPosForHeader+50,y=yPosForHeader ArtikelLabel=tk.

我想动态地放置我的小部件。如果我改变一个小部件的位置,所有其他小部件也应该被移动

我尝试了类似的方法,但测试并没有按照我的要求正确显示。它在我的输入小部件的左侧,但我希望它+20px添加到TypEntry

canvas=tk.Canvasroot,高度=500,宽度=300 帆布包装 TypEntry=tk.Entryroot,宽度=10 TypEntry.pack TypEntry.placex=xPosForHeader+50,y=yPosForHeader ArtikelLabel=tk.Labelroot,text=Test 阿蒂凯拉贝尔包 ArtikelLabel.placex=TypEntry.winfo_x+20,y=yPosForHeader
有点不清楚您到底在问什么,因为tkinter提供了几种相对于其他小部件放置小部件的方法

然而,如果您实际上没有约束,除了一个小部件相对于另一个小部件的放置之外,最简单的解决方案是放置。根据我的经验,除了在非常罕见的情况下,地点几乎从来都不是正确的解决方案,因为你必须自己做更多的工作

如果您阅读place的文档,您将看到有专门用于相对放置的选项。这些选项包括relx、RELN、RELWITH和relheight

使用您的代码,它将如下所示:

ArtikelLabel.place(in_=TypEntry, relx=1.0, x=20, rely=0)
在此示例中,选项具有以下效果:

in_uu指定此小部件相对于的小部件

relx是一个浮点值,其中0表示另一个小部件的左边缘,1.0表示右边缘。通过使用1.0,我们是说用户希望标签相对于条目小部件的最右边缘定位

x是一个绝对数。与relx结合使用时,将对值进行求和。因此,relx=1.0,x=20意味着右边缘右侧有20个像素

rely指定小部件与小部件的上边缘对齐


这个问题有点宽泛。Tkinter提供了几种相对放置小部件的方法。解决方案完全取决于您想要的布局类型。在同一个小部件上同时调用.pack和.place是毫无意义的。而像.winfo_x这样的小部件信息方法在创建小部件后不会立即返回有效结果,您必须调用.update_idletasks或以其他方式执行至少一次mainloop迭代才能使其实际工作。这是有意义的。我认为pack是我想要使用的几何管理器,在我使用.pack创建对象后,place是它的一个功能。我有很多小部件,还有很多,但由于它是一个规范/欢迎使用,我只是将代码简化为。所以我想和pack一起工作。谢谢你的回答,但我不认为这是我的解决方案。@ebug38:如果这不能回答你的问题,你应该重写这个问题,使之更清楚。如前所述,这正是所要求的——它将一个小部件相对于另一个小部件放置。正如我在评论中提到的,我没有意识到我使用了2个几何管理器。我必须重写我的代码:P。也许我会自己为包管理器找到一个解决方案。谢谢你的帮助。你的解决方案是合法的。