[Python] Login window center

Discussão em 'Python' iniciado por Stack, Setembro 25, 2024.

  1. Stack

    Stack Membro Participativo

    I'm totally new to python and Tkinter and trying to make a login window that leads to another page, if the right username and password are submited. Works pretty well, but the window is not centered, tried everything but nothing works, it doesn't move at all.

    This is my code, I hope some1 can help :)

    class logInWindow(tk.Frame):

    def __init__(self, parent, controller):
    tk.Frame.__init__(self, parent)

    self.configure(bg='white')

    header = ttk.Label(
    self,
    text="SRH-WIP",
    anchor="center",
    style="Header.TLabel"
    )

    # Footer als TTK-Label
    bottom = ttk.Label(
    self,
    style="Footer.TLabel"
    )

    # TTK Style
    style = ttk.Style()
    style.configure("Header.TLabel", foreground='white', background='#DF4807', font=("Inter", 50, 'bold'))
    style.configure("Footer.TLabel", background='#D9D9D9')

    # login button
    def login():
    username = "Jack"
    password = "12345"
    if username_entry.get() == username and password_entry.get() == password:
    #messagebox.showinfo(title="Erfolgreich", message="Anmeldung erfolgreich")
    controller.show_frame(mainPage) # Zeige die MainPage, wenn Login erfolgreich
    else:
    messagebox.showinfo(title="Fehler", message="Passwort oder Benutzername falsch")

    login_frame = tk.Frame(self, bg='white')

    # create Anmelde Widget
    login_label = tk.Label(login_frame, text="", bg='white', font=("Inter", 23, 'bold'))
    username_label = tk.Label(login_frame, text="Benutzername", bg='white', font=("Inter", 19))
    username_entry = tk.Entry(login_frame, bg='white', font=("Inter", 15))
    password_entry = tk.Entry(login_frame, show="*", bg='white', font=("Inter", 15))
    password_label = tk.Label(login_frame, text="Passwort ", bg='white', font=("Inter", 19))
    login_button = tk.Button(
    login_frame, text="Login", bg='#081424', fg='white', font=("Inter", 20, 'bold'), command=login)

    # place on screen Anmelde Widget
    login_label.grid(row=5, column=1, columnspan=3, sticky="", padx=40, pady=40)
    username_label.grid(row=6, column=1)
    username_entry.grid(row=7, column=1, padx=30, pady=10)
    password_label.grid(row=8, column=1)
    password_entry.grid(row=9, column=1, padx=30, pady=10)
    login_button.grid(row=10, column=0, columnspan=2, padx=40, pady=30)


    # Platziere Header und Footer relativ zur Fenstergröße
    header.place(relx=0, rely=0, relwidth=1, relheight=0.1)
    bottom.place(relx=0, rely=0.85, relwidth=1,
    relheight=0.13)

    login_frame.grid(row=1, column=0)


    I tried:

    # Widgets in der Mitte zentrieren
    login_label.grid(row=0, column=0, columnspan=3, sticky="nsew", padx=40, pady=(40, 10))
    username_label.grid(row=1, column=0, sticky="nsew")
    username_entry.grid(row=2, column=0, padx=30, pady=10, sticky="nsew")
    password_label.grid(row=3, column=0, sticky="nsew")
    password_entry.grid(row=4, column=0, padx=30, pady=10, sticky="nsew")
    login_button.grid(row=5, column=0, padx=40, pady=30, sticky="nsew")


    # create Anmelde Widget
    login_label = tk.Label(login_frame, text="", bg='white', font=("Inter", 23, 'bold'))
    username_label = tk.Label(login_frame, text="Benutzername", bg='white', font=("Inter", 19))
    username_entry = tk.Entry(login_frame, bg='white', font=("Inter", 15))
    password_label = tk.Label(login_frame, text="Passwort", bg='white', font=("Inter", 19))
    password_entry = tk.Entry(login_frame, show="*", bg='white', font=("Inter", 15))
    login_button = tk.Button(
    login_frame, text="Login", bg='#081424', fg='white', font=("Inter", 20, 'bold'), command=login)

    # place on screen Anmelde Widget
    login_label.grid(row=0, column=0, columnspan=3, sticky="nsew", padx=40, pady=(40, 10))
    username_label.grid(row=1, column=0, sticky="nsew")
    username_entry.grid(row=2, column=0, padx=30, pady=10, sticky="nsew")
    password_label.grid(row=3, column=0, sticky="nsew")
    password_entry.grid(row=4, column=0, padx=30, pady=10, sticky="nsew")
    login_button.grid(row=5, column=0, padx=40, pady=30, sticky="nsew")

    login_frame.grid_rowconfigure(0, weight=1) # Für den login_label
    login_frame.grid_rowconfigure(1, weight=1) # Für den username_label
    login_frame.grid_rowconfigure(2, weight=1) # Für den username_entry
    login_frame.grid_rowconfigure(3, weight=1) # Für den password_label
    login_frame.grid_rowconfigure(4, weight=1) # Für den password_entry
    login_frame.grid_rowconfigure(5, weight=1) # Für den login_button

    Continue reading...

Compartilhe esta Página