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

时间:2017-12-15 17:38:14

标签: 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('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()

我想这样: enter image description here

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

enter image description here

1 个答案:

答案 0 :(得分:1)

当您创建小部件时,例如框架和标签以及条目和按钮,您传递的第一个arg是“父级”或“主级”arg。那个arg决定了Tkinter放置小部件的位置。因此,如果您希望您的小部件显示在某个帧中,则在创建小部件时传递该帧而不是ArootA。

特别是,因为你想要在f2中使用小部件,所以在创建这些小部件时,将f2而不是ArootA作为第一个arg传递。

创建框架时,传入根窗口小部件ArootA。所以:

f2 = Frame(width=400, ...

应该是:

f2 = Frame(ArootA, width=400, ...

由于您希望窗口小部件位于f2中,请更改:

AnameL = Label(ArootA, ...

AnameL = Label(f2, ... 

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