我如何编辑到目前为止我制作的这段代码,以便当我单击"注册"按钮时,它会关闭该 gui 并打开下一个 gui



我正在使用 tkinter 制作 gui 并制作了各种不同的按钮,现在我已经完成了所有这些,我不确定如何在第二个打开时正确关闭第一个 GUI 框(sign_in函数(

from tkinter import *
class login:
    def __init__(self, master):
        frame = Frame(master)
        frame.grid()
        self.button1 = Button(frame, text="signup", fg="green",command=self.sign_in)
        self.button2 = Button(frame, text="sign in", fg="black",)
        self.button3 = Button(frame, text="quit", fg="red", command=frame.master.destroy)
        self.button1.grid(stick=W)
        self.button2.grid(stick=W)
        self.button3.grid(stick=W)

    def sign_in(self):
        frame = Frame()
        frame.grid()
        name = Label(root, text="Name: ")
        password = Label(root, text="password: ")
        entry1 = Entry(root)
        entry2 = Entry(root)
        name.grid(row=0, sticky=E)
        password.grid(row=1, sticky=E)
        entry1.grid(row=0, column=1)
        entry2.grid(row=1, column=1)
        c = Checkbutton(root, text="keep me logged in")
        c.grid(columnspan=2, sticky="w")

root = Tk()
account=login(root)
root.mainloop()

您的代码包含一些缩进错误,所以我只回答您的问题。

当我单击"注册"按钮时,它会关闭该 GUI 并打开下一个 GUI

您可以通过首先撤回根窗口来做到这一点,如下所示:root.withdraw()这将隐藏您的原始窗口。然后创建一个顶级窗口,如下所示:newWindow = tk.Toplevel(root)创建一个新窗口。您只需将这些行放在按钮命令调用中。

以下是您可以在sign_in注释中更改的内容,我将所有母版更改为frame而不是root

def sign_in(self):
    root.withdraw()
    frame = Toplevel(root)
    name = Label(frame, text="Name: ")
    password = Label(frame, text="password: ")
    entry1 = Entry(frame)
    entry2 = Entry(frame)
    name.grid(row=0, sticky=E)
    password.grid(row=1, sticky=E)
    entry1.grid(row=0, column=1)
    entry2.grid(row=1, column=1)
    c = Checkbutton(frame, text="keep me logged in")
    c.grid(columnspan=2, sticky="w")

最新更新