为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法让一个小部件始终相对于另一个小部件(例如 Pack)

有没有办法让一个小部件始终相对于另一个小部件(例如 Pack)

慕容708150 2023-06-27 17:36:15
因此,我使用 place 方法让一个小部件与其他小部件重叠,但它的位置是相对于(与winfo)使用 pack 的小部件。当父框架调整大小时,打包位置会改变,但放置位置不会改变。这是我的代码:from tkinter import *root = Tk()root.geometry("200x300")search = Entry(root)search.pack()search.update()x = search.winfo_x()y = search.winfo_y()width = search.winfo_width()height = search.winfo_height()frame = LabelFrame(root, width=width, height=200)frame.place(x=x, y=y+height)root.mainloop()调整窗口大小时,LabelFrame 保持在其 x 和 y 位置。Entry 小部件将用作搜索栏,我希望在其下自动完成。输入小部件下会有小部件,并且自动完成功能仅在您键入时才会出现(但这不是我想要的。如果您需要它,它只是更多的说明)。那么,有没有办法让地点小部件始终相对于包小部件。如果您有答案,谢谢您:)
查看完整描述

1 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

如果您的目标是将一个小部件相对于另一个小部件放置,那么place您可以这样做。它非常适合工具提示或其他不适合正常布局的临时小部件。


最简单的方法是使该小部件成为控制小部件的子部件。例如,为了使框架相对于搜索框放置,您可以将其设为搜索框的子项。如果这样做不方便,您可以使用in_参数来区分place哪个小部件是另一个小部件。


例如,要将标签框放置在搜索框的正下方并与搜索框具有相同的宽度,您可以这样做:


frame.place(

    in_=search,

    bordermode="outside",

    anchor="nw",

    relx=0,

    rely=1.0,

    y=5,

    relwidth=1.0

)

这就是选项的含义:

  • in_=search:相对于搜索框放置框架

  • bordermode="outside":相对测量是从边界外部开始的(默认为“内部”)

  • anchor="nw":放置小部件,使框架的西北角位于计算的坐标处

  • relx=0:将锚点放置在距搜索框左边缘 0% 的位置

  • rely=1.0:将框架放置在搜索框高度的 100% 处

  • y=5:向计算位置添加 5 个像素,使其浮在窗口下方一点点处

  • relwidth=1.0:使框架的宽度为搜索框宽度的100%。

显然你不必使用,我只是添加它来说明使用和y=5的附加行为。relyy


查看完整回答
反对 回复 2023-06-27
  • 1 回答
  • 0 关注
  • 65 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信