繁体   English   中英

如何在 Tkinter 的框架内居中放置框架?

[英]How do I center a frame within a frame in Tkinter?

我有一个框架,我固定了使用grid_propagate()方法的大小。 我想在这个框架内居中放置一个框架。 我该怎么做?

包装它以填充所有方向。 根据需要添加填充。

或者,使用 place 可以让您使用相对或绝对定位。 您可以使用 .5/.5 的相对 x/y 和“c”(中心)的锚点。

import Tkinter as tk

root=tk.Tk()
f1 = tk.Frame(width=200, height=200, background="red")
f2 = tk.Frame(width=100, height=100, background="blue")

f1.pack(fill="both", expand=True, padx=20, pady=20)
f2.place(in_=f1, anchor="c", relx=.5, rely=.5)

root.mainloop()

如果您想将小部件(如框架)置于框架内,最简单的方法是通过.grid() 如果你使用.pack() ,你最终会卡在一个边上,因为pack()side关键字。

如果您使用.place() ,那么您会被困在强制外框的大小(通常您不必这样做,但您已经这样做了,所以这不是问题),因为placed小部件是当框架像packedgridded小部件一样自动调整大小时,未检测到。 我不知道为什么,但事情就是这样。

因此,一般来说,将小部件居中放置在框架内的最佳方法是将小部件grid到框架中。 sticky选项默认为 CENTER。)然后,如果您希望能够调整外框的大小并使小部件保持居中,则需要允许外框的单元格扩展/增长。 您可以通过.grid_rowconfigure()等命令执行此操作。 所以,一个例子可能是:

        widget = Widget(frame, ...)
        widget.grid(row=0, column=0, sticky="")
        frame.grid_rowconfigure(0, weight=1)
        frame.grid_columnconfigure(0, weight=1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM