Python 使用.pack()在Tkinter框架中居中小部件

Python 使用.pack()在Tkinter框架中居中小部件,python,tkinter,pack,Python,Tkinter,Pack,我尝试使用.pack()方法将所有标签和输入框向下移动到屏幕中间。我试着用 anchor = CENTER 使用.place()方法,但这会使所有内容在中心重叠。我如何简单地将所有小部件移动到Tkinter框架的中心 这是我的密码: from Tkinter import * root = Tk() root.minsize(width = 500, height = 500) root.wm_title("Email Program v1.0") def callback():

我尝试使用.pack()方法将所有标签和输入框向下移动到屏幕中间。我试着用

anchor = CENTER
使用.place()方法,但这会使所有内容在中心重叠。我如何简单地将所有小部件移动到Tkinter框架的中心

这是我的密码:

from Tkinter import *

root = Tk()
root.minsize(width = 500, height = 500)
root.wm_title("Email Program v1.0")

def callback():
    print ("Hello!")

#sign in - email
usernameLabel = Label(root, text = "Email:")
usernameLabel.pack(padx = 0, pady = 0)

usernameInput = Entry(root)
usernameInput.pack()
usernameInput.focus_set()

passwordLabel = Label(root, text = "Password:")
passwordLabel.pack()

passwordInput = Entry(root, show = "*", width = 20)
passwordInput.pack()
passwordInput.focus_set()

#submit email credentials - connect to the server
submitEmail = Button(root, text = "Submit", fg = "black", width = 10, command = callback)
submitEmail.pack()

root.mainloop()

简单的解决方案是将所有小部件放在一个框架中,然后将框架居中

简单的解决方案是将所有小部件放在一个框架中,然后将框架居中

我设法用三个框架将这些标签和条目放在中心,两个框架没有任何内容,只是为了“吃”空间

frame1 = Frame(root)
frame1.pack(expand=True)

frame2 = Frame(root)

usernameLabel = Label(frame2, text = "Email:")
usernameLabel.pack(padx = 0, pady = 0)

usernameInput = Entry(frame2)
usernameInput.pack()
usernameInput.focus_set()

passwordLabel = Label(frame2, text = "Password:")
passwordLabel.pack()

passwordInput = Entry(frame2, show = "*", width = 20)
passwordInput.pack()
passwordInput.focus_set()
submitEmail = Button(frame2, text = "Submit", fg = "black", width = 10, command\
 = callback)
submitEmail.pack()

frame2.pack(anchor=CENTER)

frame3 = Frame(root)
frame3.pack(expand=True)

我设法用三个框架将这些标签和条目放在中心,两个框架没有任何内容,只是为了“吃”空间

frame1 = Frame(root)
frame1.pack(expand=True)

frame2 = Frame(root)

usernameLabel = Label(frame2, text = "Email:")
usernameLabel.pack(padx = 0, pady = 0)

usernameInput = Entry(frame2)
usernameInput.pack()
usernameInput.focus_set()

passwordLabel = Label(frame2, text = "Password:")
passwordLabel.pack()

passwordInput = Entry(frame2, show = "*", width = 20)
passwordInput.pack()
passwordInput.focus_set()
submitEmail = Button(frame2, text = "Submit", fg = "black", width = 10, command\
 = callback)
submitEmail.pack()

frame2.pack(anchor=CENTER)

frame3 = Frame(root)
frame3.pack(expand=True)

你怎么能期望它们都居中而不重叠呢?如果两个东西居中,根据定义,它们将位于彼此之上。此代码与pack(anchor=“center”)一起在我的机器上工作。需要一些进一步的代码/解释来复制该问题。仅水平或垂直居中?您如何期望它们都居中而不重叠?如果两个东西居中,根据定义,它们将位于彼此之上。此代码与pack(anchor=“center”)一起在我的机器上工作。需要一些进一步的代码/解释来复制问题。是水平还是垂直移动到中心?