簡體   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