我想动态放置我的小部件。如果我更改一个小部件的位置,所有其他小部件也应该移动。
我尝试了类似的方法,但是“测试”没有按照我想要的方式正确显示。它位于我的条目小部件的左侧,但我希望将其 + 20px 添加到 TypEntry。
canvas = tk.Canvas(root, height=500, width=300)
canvas.pack()
TypEntry = tk.Entry(root, width=10)
TypEntry.pack()
TypEntry.place(x=xPosForHeader+50, y=yPosForHeader)
ArtikelLabel = tk.Label(root, text="Test")
ArtikelLabel.pack()
ArtikelLabel.place(x=TypEntry.winfo_x()+20, y=yPosForHeader)
Run Code Online (Sandbox Code Playgroud)
有点不清楚你到底在问什么,因为 tkinter 提供了几种相对于其他小部件放置小部件的方法。
但是,如果除了一个小部件相对于另一个小部件放置之外实际上没有任何约束,那么最简单的解决方案是place。根据我的经验,place除非在极少数情况下,否则几乎从来都不是正确的解决方案,因为您必须自己做更多的工作。
如果您阅读文档,place您会发现有专门用于相对放置的选项。这些选项包括relx、rely和relwidth。relheight
使用您的代码,它看起来像这样:
ArtikelLabel.place(in_=TypEntry, relx=1.0, x=20, rely=0)
Run Code Online (Sandbox Code Playgroud)
在此示例中,选项具有以下效果:
in_指定该小部件相对于的小部件
relx是一个浮点值,其中 0 表示另一个小部件的左边缘,1.0 表示右边缘。通过使用1.0,我们是说希望标签相对于条目小部件的最右边缘定位。
x是绝对数。当与 with 结合使用时relx,将对值进行求和。因此relx=1.0, x=20意味着右边缘右侧 20 个像素
依赖指定小部件将与小部件的上边缘对齐。