我的GUI应用程序无法协调



代码适用于具有登录页面的GUI应用

from tkinter import *
import tkinter.messagebox as tm
import restaurant_management_system

class LoginFrame(Frame):
    def __init__(self, master):
        super().__init__(master)
        self.label_1 = Label(self, text="Username")
        self.label_2 = Label(self, text="Password")
        self.entry_1 = Entry(self)
        self.entry_2 = Entry(self, show="*")
        self.label_1.grid(row=0, sticky=E)
        self.label_2.grid(row=1, sticky=E)
        self.entry_1.grid(row=0, column=1)
        self.entry_2.grid(row=1, column=1)
        self.checkbox = Checkbutton(self, text="Keep me logged in")
        self.checkbox.grid(columnspan=2)
        self.logbtn = Button(self, text="Login", command = self._login_btn_clickked)
        self.logbtn.grid(columnspan=2)
        self.pack()
    def _login_btn_clickked(self):
        #print("Clicked")
        username = self.entry_1.get()
        password = self.entry_2.get()
        #print(username, password)
        if username == "john" and password == "password":
            tm.showinfo("Login info", "Welcome John")
        else:
            tm.showerror("Login error", "Incorrect username")
root = Tk()
lf = LoginFrame(root)
root.mainloop()

我已经导入另一个PY文件,但是我不知道如何成功登录时如何运行它。

您基本上需要检查用户名和密码是否正确,然后销毁 frame,以使小部件包含在另一侧并重新绘制任何您想要的东西:

from tkinter import *
class App:
    def __init__(self, root):
        self.username = "Username"
        self.password = "Password"
        self.root = root
        self.frame = Frame(self.root)
        self.entry1 = Entry(self.frame)
        self.entry2 = Entry(self.frame)
        self.button1 = Button(self.frame, text="Ok", command=self.login)
        self.frame.pack()
        self.entry1.pack()
        self.entry2.pack()
        self.button1.pack()
    def login(self):
        if self.entry1.get() == self.username and self.entry2.get() == self.password:
            self.frame.destroy()
            self.frame = Frame(self.root)
            self.label = Label(self.frame, text="You are logged in")
            self.frame.pack()
            self.label.pack()
root = Tk()
App(root)
root.mainloop()

最新更新