0

我正在尝试在 Tkinter 中使用.pack(). 我想把它放在loginFrame小窗口的中心。在loginFrame密码部分顶部的用户名部分内。

def main():
    window = tk.Tk()
    window.geometry("400x200")
    window.title("PySploit")
    window.resizable(False, False)
    window.configure(background="#E1E5F2")

    loginFrame = tk.Frame(window).pack(anchor="center")

    usernameFrame = tk.Frame(loginFrame).pack(side=LEFT)
    passwordFrame = tk.Frame(loginFrame).pack(side=LEFT)

    tk.Label(usernameFrame, text="Username").pack(side=LEFT)
    tk.Entry(usernameFrame, name="username").pack(side=LEFT)

    tk.Label(passwordFrame, text="Password").pack(side=LEFT)
    tk.Entry(passwordFrame, name="password").pack(side=LEFT)
    
    window.mainloop()
    return

if __name__ == "__main__":
    main()

这是我的错误输出:

这是我的输出

4

1 回答 1

1

对于您的要求,您不需要usernameFrameand passwordFrame,就loginFrame足够了。

您可以使用代替将这些标签和按钮放在loginFrame窗口的中心,然后使用:place()loginFramegrid()

import tkinter as tk

def main():
    window = tk.Tk()
    window.geometry("400x200")
    window.title("PySploit")
    window.resizable(False, False)
    window.configure(background="#E1E5F2")

    loginFrame = tk.Frame(window)
    # place loginFrame at the center of window
    loginFrame.place(relx=0.5, rely=0.5, anchor='c')

    # use grid() instead of pack() to lay out labels and entries
    tk.Label(loginFrame, text="Username").grid(row=0, column=0)
    tk.Entry(loginFrame, name="username").grid(row=0, column=1)

    tk.Label(loginFrame, text="Password").grid(row=1, column=0)
    tk.Entry(loginFrame, name="password").grid(row=1, column=1)

    window.mainloop()


if __name__ == "__main__":
    main()
于 2021-12-16T14:17:56.260 回答