两个窗口:第一次登录后,主程序

2024-03-28 12:38:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个节目

class loginWindow():
    def __init__(self, master):
        self.master = master
        self.frame = Frame(master)
        master.title(u"Geometry Calc - Login")
        Button(master, text="Login", command=self.login).pack()

    def login(self):
        self.newWindow = Toplevel(self.master)
        main(self.newWindow)
        self.master.withdraw()


class main():
    def __init__(self, master):
        # Nastavení nového okna
        master.title(u"Geometry Calc")  # Nadpis
        master.geometry("695x935")  # Rozmery v px
        master.config(background="white")
        master.resizable(width=FALSE, height=FALSE)  # Zakážeme změnu rozměrů uživatelem - zatím..

        menubar = Menu(master)

        helpmenu = Menu(menubar, tearoff=0)
        helpmenu.add_command(label="Konec", command=master.quit)
        menubar.add_cascade(label="Soubor", menu=helpmenu)
        helpmenu = Menu(menubar, tearoff=0)
        helpmenu.add_command(label="O programu", command=self.createAbout)
        menubar.add_cascade(label="Pomoc", menu=helpmenu)
        master.config(menu=menubar)

        canvas = Canvas(master, width=691, height=900)
        canvas.pack(expand=1, fill=BOTH)
        self.showImage(canvas, 347, 454, "geometry_table.jpg")


root = Tk()
app = loginWindow(root)
root.mainloop()
`

我有这个问题。当我运行我的程序时,我可以看到登录窗口,当我点击登录按钮时,我得到了windowmain,但窗口登录只被撤销。所以当我关闭windowmain时,我的程序仍然在运行。我要做这个。首次运行程序main,但将不可见或其他内容。我只看到登录窗口(可能是顶层)。当我点击“登录”按钮时,窗口登录窗口将得到destroy(),窗口main将可见


Tags: self程序masteraddmaindefrootlabel
1条回答
网友
1楼 · 发布于 2024-03-28 12:38:21

您可以使用Toplevel作为登录窗口,使用withdrawdeiconify方法分别隐藏和显示根窗口。在

检查以下代码:

from Tkinter import *


class loginWindow(Toplevel):
    def __init__(self, title, parent):
        Toplevel.__init__(self, parent)
        # Save parent reference to use it 
        self.parent = parent
        self.parent.title(u"Geometry Calc - Login")
        Button(self, text="Login", command=self.login).pack()

    def login(self):

        access =  True # Used to test if a user can login.

        if access:
            # Close Toplevel window and show root window
            self.destroy()
            self.parent.deiconify()
        else:
            self.parent.quit()



class main(Tk):
    def __init__(self, *args, **kwargs):
        Tk.__init__(self, *args, **kwargs)
        self.title(u"Geometry Calc")  # Nadpis
        self.geometry("695x935")  # Rozmery v px
        self.config(background="white")
        self.resizable(width=FALSE, height=FALSE)  # Zakážeme změnu rozměrů uživatelem - zatím..

        menubar = Menu(self)

        helpmenu = Menu(menubar, tearoff=0)
        helpmenu.add_command(label="Konec", command=self.quit)
        menubar.add_cascade(label="Soubor", menu=helpmenu)
        helpmenu = Menu(menubar, tearoff=0)
        helpmenu.add_command(label="O programu", command=self.createAbout)
        menubar.add_cascade(label="Pomoc", menu=helpmenu)
        self.config(menu=menubar)

        canvas = Canvas(self, width=691, height=900)
        canvas.pack(expand=1, fill=BOTH)

        # Hide root window
        self.withdraw()

        # Lunch login window
        loginWindow('Frame', self)


    def createAbout(self):
        pass

    def quit(self):
        self.destroy()



app = main()

app.mainloop()

如果您想使用两个顶级窗口登录和主应用程序,root window应该隐藏:

^{pr2}$

相关问题 更多 >