Python 如何在框架中放置标签和按钮

Python 如何在框架中放置标签和按钮,python,python-3.x,tkinter,frame,python-3.5,Python,Python 3.x,Tkinter,Frame,Python 3.5,如何将用户名和密码标签以及登录按钮放置在f2框中。因为,目前f1和f2正在覆盖标签和按钮 这是我的密码: from tkinter import * import os def adminLogin(): global AnameEL global ApwordEL # More globals :D global ArootA ArootA = Tk() # This now makes a new window. ArootA.geometry('

如何将用户名和密码标签以及登录按钮放置在f2框中。因为,目前f1和f2正在覆盖标签和按钮

这是我的密码:

from tkinter import *
import os

def adminLogin():
    global AnameEL
    global ApwordEL # More globals :D
    global ArootA

    ArootA = Tk() # This now makes a new window.
    ArootA.geometry('1280x720')
    ArootA.title('Admin login') # This makes the window title 'login'

    f1 = Frame(width=200, height=200, background="#D3D3D3")
    f2 = Frame(width=400, height=200, background="#b4b4b4")

    f1.pack(fill="both", expand=True, padx=0, pady=0)
    f2.place(in_=f1, anchor="c", relx=.5, rely=.5)

    AnameL = Label(ArootA, text='Username: ') # More labels
    ApwordL = Label(ArootA, text='Password: ') # ^
    AnameL.grid(row=1, sticky=W)
    ApwordL.grid(row=2, sticky=W)

    AnameEL = Entry(ArootA) # The entry input
    ApwordEL = Entry(ArootA, show='*')
    AnameEL.grid(row=1, column=1)
    ApwordEL.grid(row=2, column=1)

    AloginB = Button(ArootA, text='Login')
    AloginB.grid(columnspan=2, sticky=W)

adminLogin()
我想这样:

放在中间这个深灰色的小盒子里:


创建小部件(如框架、标签、条目和按钮)时,传递的第一个参数是“父”或“主”参数。该参数确定Tkinter将小部件放置在何处。因此,如果您想让您的小部件显示在某个帧中,那么在创建小部件时传递该帧而不是ArootA

特别是,由于您希望小部件位于f2内,因此在创建这些小部件时,将f2而不是ArootA作为第一个参数传递

创建帧时,应该传入根小部件ArootA。因此:

f2 = Frame(width=400, ...
应该是:

f2 = Frame(ArootA, width=400, ...
由于您希望小部件位于f2中,请更改:

AnameL = Label(ArootA, ...


等等,这应该会给你想要的结果。

注意,
Tk()
不仅仅是创建一个窗口。它创建根窗口,该窗口是小部件的父窗口,创建时不传递父窗口,例如
f1
f2
,除非已经存在
Tk
的实例。如果您在这个函数之前已经创建了其他小部件,那么肯定有。基本上,将您的
f1
f2
替换为
Tk
第一个实例的子对象,因此此处提供的答案可能无法轻松集成到整个脚本中。请注意,运行此代码会产生错误,因为您试图在同一父对象中使用所有三个几何管理器,这是不允许的。
AnameL = Label(f2, ...