Tkinter вошел в систему пользователя - PullRequest
0 голосов
/ 19 апреля 2020

Создаю систему в tkinter, используя python 3.7 в windows 10, у которой есть два пользователя; пользователь и админ. Вот моя проблема, я хочу получить вошедшего в систему пользователя, чтобы я мог разграничить между пользователем и администратором и отображать различный контент. Я не хочу использовать flask. Другими словами, я ищу эквивалент $ _SESSION [] в php, но теперь для python. Любая помощь будет высоко оценена.

    class Mainframe(Tk):
        def __init__(self):
           Tk.__init__(self)
           self.frame = FirstFrame(self)
           self.frame.place(relheight=1, relwidth=1)

       def change(self, frame):
           self.frame.pack_forget() # delete currrent frame
           self.frame = frame(self)
           self.frame.place(relwidth=1, relheight=1) # make new frame

    class LoginFrame(Frame):
        def __init__(self, master=None, **kwargs):
            Frame.__init__(self, master, **kwargs)

            master.title("Enter password")
            w = self.winfo_screenwidth()
            h = self.winfo_screenheight()
            master.geometry("%dx%d+0+0" %(w, h))

            self.status =Label(self, fg='red')
            self.status.pack()

            frame = LabelFrame(self, padx=50, pady=50)
            frame.pack(pady=200, padx=50)

            uname_lbl = Label(frame, text="Username", font=font17)
            uname_lbl.grid(row=0, column=0, padx=10, sticky=W)

            self.uname_entry = ttk.Entry(frame, width=20, font=font17)
            self.uname_entry.focus()
            self.uname_entry.grid(row=0, column=1, pady=5)

            pass_lbl =Label(frame, text="Password", font=font17)
            pass_lbl.grid(row=1, column=0,padx=10, sticky=W)

            self.upass_entry = ttk.Entry(frame, width=20, font=font17, show="*")
            self.upass_entry.bind('<Return>', self.check)
            self.upass_entry.grid(row=1, column=1, pady=25)

            login_btn = Button(frame, text="Login", padx=10, pady=1, width=15, font=font17, bg="magenta", command=self.check)
            login_btn.grid(row=2, column=0, columnspan=2)


        def check(self, event=None):
            username = self.uname_entry.get()
            password = self.upass_entry.get()
            if username == "" and password == "":
                messagebox.showerror("Empty Fields", "Username & Password are required to login!")
                return
            elif username == "":
                messagebox.showerror("Username Required", "Username can't be Empty!")
                return
            elif password == "":
                messagebox.showerror("Password Required", "Password can't be Empty!")
                return
            else:
                pass
            # I have class database which contains fetch_agent function
            for row in db.fetch_agent(username, password):
                uname = row[1]
                passwd = row[3]
                self.user = row[2]

            try:
                if(uname != username and passwd != password):
                    return
            except:
                messagebox.showerror("Wrong Credentials", "Wrong Password and/or Username!\nCheck your credentials and try \nagain please...")

            else:
                self.master.change(HomeFrame)




    class HomeFrame(Frame):
        def __init__(self, master=None, **kwargs):
            Frame.__init__(self, master, **kwargs)
            master.title("Main application")
            w = self.winfo_screenwidth()
            h = self.winfo_screenheight()
            master.geometry("%dx%d+0+0" %(w, h))

            self.add_tab()

        def add_tab(self):
            self.notebook =ttk.Notebook(self)
            self.notebook.pack(expand=1, fill='both')
            if user == "admin":
                self.tab1 = Menu(self.notebook)
                self.tab2 = Check(self.notebook)
                self.tab3 = Guests(self.notebook)
                self.tab6 = Rooms(self.notebook)
                self.tab8 = Utilities(self.notebook)

                self.notebook.add(self.tab1, text="Menu", padding=5)
                self.notebook.add(self.tab2, text="Checkin", padding=5)
                self.notebook.add(self.tab3, text="Guests", padding=5)
                self.notebook.add(self.tab6, text="Rooms", padding=5)
                self.notebook.add(self.tab8, text="Utilities", padding=5)
           else:
               self.tab1 = Menu(self.notebook)
               self.tab2 = Check(self.notebook)

               self.notebook.add(self.tab1, text="Menu", padding=5)
               self.notebook.add(self.tab2, text="Checkin", padding=5)


    class Menu(Frame):
        def __init__(self):
            Tk.__init__(self)
            self.frame = FirstFrame(self)
            self.frame.place(relheight=1, relwidth=1)

            # Content for class menu

    class Check(Frame):
        def __init__(self):
            Tk.__init__(self)
            self.frame = FirstFrame(self)
            self.frame.place(relheight=1, relwidth=1)

            # Content for class Check
    class Guests(Frame):
        def __init__(self):
            Tk.__init__(self)
            self.frame = FirstFrame(self)
            self.frame.place(relheight=1, relwidth=1)

            # Content for class guests

    class Rooms(Frame):
        def __init__(self):
            Tk.__init__(self)
            self.frame = FirstFrame(self)
            self.frame.place(relheight=1, relwidth=1)

            # Content for class rooms

    class Utilities(Frame):
        def __init__(self):
            Tk.__init__(self)
            self.frame = FirstFrame(self)
            self.frame.place(relheight=1, relwidth=1)

            # Content for class utilities


    app=Mainframe()
    app.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...