考虑以下简单代码:
from tkinter import *
mainFrame = Frame(parent, bd=5, bg="yellow").pack(expand=True,fill=BOTH)
frameA = Frame(mainFrame, bd=5, bg="green").place(anchor=NW, relx=0, rely=0 , relwidth=1.0, height=40)
my_label = Label(mainFrame, text="Hello world ", bg="red").place(in_=frameA, relx=0, anchor=NW, rely=0, relwidth=0.5)
frameB = Frame(frameA, bd=5, bg="gold").place(in_=frameA , anchor=N, relx=0.5, rely=0.8, width=30, height=50)
黄色框架是有道理的,是我所期望的。frameA(绿色)和 my_label 也是如此。
但是,frameB 拒绝做我期望的事情,最初我已经为它的 place 命令依赖 = 1.0 并且我期望它的 N(顶部中心边缘)被放置在绿色框架底部的水平中点(1.0 * 高度)我已将其设置为它的父级并用作它的 .place() 命令 _in 参数。
无论我用于实例化 frameB 的 root 参数或所述 in_ 参数如何,frameB 的依赖似乎一直被放置在大型机或 root 中。
我知道我可以使用 .pack(),但我正试图弄清楚 .place() 的行为,所以请不要让我既不使用 .pack() 也不使用 .grid()。
我究竟做错了什么?还是(更糟糕的)误解?