Tkinter 框架的尺寸与给定的尺寸和 idk 为什么不同

Tkinter frame has dimensions different from dimensions given to and idk why

我现在正在为 Tkinter 苦苦挣扎。我想创建布局,但如果我定义 window 尺寸 (800x600) 并创建宽度也必须为 800 的框架,它只有一半。

我尝试使用谷歌搜索并更改代码,如果我将宽度乘以 2 倍(至 1600),那么框架将完美适合屏幕。

代码如下:

import tkinter as tk

SW, SH = 800, 600

win = tk.Tk()
win.geometry(f"{SW}x{SH}")

frm_appname = tk.Frame(
    master = win,
    bg = 'red'
)

frm_appname.place(
    anchor = tk.N,
    width = 800,
    relheight = (1/6)
)

这是输出:

谁能给我解释一下这里发生了什么?

“n”的锚点 (tk.N) 表示框架的顶部 center 部分位于给定坐标处。由于您没有为 place 提供 x 和 y 坐标,因此默认为 0,0。因此,框架的 top/middle (400,0) 位于坐标 0,0.

如果将锚点设置为“n”或 tk.NW,框架的左上角将位于 window 的左上角。


顺便说一句,经验告诉我,使用 pack and/or grid 几乎总是更容易创建布局。在我使用 tk 和 tkinter 数十年的过程中,我从未将 place 用于超过一两个特殊情况的小部件。