【发布时间】:2017-10-02 10:45:03
【问题描述】:
考虑以下简单代码:
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 拒绝执行我期望的操作,最初我将其放置命令依赖 = 1.0,并且我希望将其 N(顶部中心边缘)放置在底部的水平中点(1.0*height)我设置为它的父级并用作它的绿色框架 .place() 命令 _in 参数。
无论我用于实例化 frameB 的 root 参数或所述 in_ 参数如何,frameB 的依赖似乎一直被放置在大型机或 root 上。
我知道我可以使用 .pack(),但我正试图弄清楚 .place() 的行为,所以请不要让我既不使用 .pack() 也不使用 .grid()。
我做错了什么?还是(更糟糕的)误解?
【问题讨论】:
-
因为
frameA是None,sinceplace()(andpack(), andgrid()) returnsNone.
标签: python tkinter tkinter-layout