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
用于超过一两个特殊情况的小部件。
我现在正在为 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
用于超过一两个特殊情况的小部件。