使用Tkinter iwant打开第二个窗口然后关闭我以前的那个窗口

时间:2017-02-26 10:28:08

标签: python windows python-3.x user-interface tkinter

我如何打开第二个窗口并关闭前一个窗口我就是一个窗口。所以使用我的代码我按下第一个窗口上的确定,它将我带到第二个窗口,但我希望第一个窗口关闭。我在过去的两个小时里一直在挣扎。感谢

from tkinter import *

class Welcome():

 def __init__(self,master):

    self.master= master
    self.master.geometry("1080x800+200+200")
    self.master.title("Sphere Booking and Check-in")

    self.label1=Label(self.master,text="Sphere Booking and Check-in",fg="black",font=("Helvetica",25)).grid(row=0,column=2)
    self.button1=Button(self.master,text="OK",fg="blue",command=self.gotoWages).grid(row=6,column=2)
    self.button2=Button(self.master,text="quit",fg="blue",command=self.finish).grid(row=6,column=3)

def finish(self):

    self.master.destroy()

def gotoWages(self):

    root2=Toplevel(self.master)
    myGUI=Wages(root2)

class Wages():

  def __init__(self,master):

    self.nhours= DoubleVar()
    self.salaryh= DoubleVar()

    self.master= master
    self.master.geometry("1080x800+200+200")
    self.master.title("Sphere Booking and Check-in")

    self.label1=Label(self.master,text="Sphere Booking and Check-in",fg="black",font=("Helvetica",25)).grid(row=0,column=2)
    self.label2=Label(self.master,text="enter your salary per hour").grid(row=3,column=0)
    self.label3=Label(self.master,text="enter the number of hours worked").grid(row=4,column=0)

    self.mysalary= Entry(self.master, textvariable= self.salaryh).grid(row=3, column=3)
    self.mysalary= Entry(self.master, textvariable= self.nhours).grid(row=4, column=3)
    self.button1=Button(self.master,text="OK",fg="blue").grid(row=5,column=3)
    self.button2=Button(self.master,text="quit",fg="blue",command=self.myquit).grid(row=6,column=3)

def myquit(self):
    self.master.destroy()

def main():

  root=Tk()
  myGUIWelcome=Welcome(root)
  root.mainloop()

if __name__ == '__main__':
  main()

1 个答案:

答案 0 :(得分:0)

如上所述"Disable the underlying window when a popup is created in Python TKinter",您只需要添加对主窗口withdraw()的调用。

def gotoWages(self):

    root2=Toplevel(self.master)
    self.master.withdraw() # windows becomes invisible
    myGUI=Wages(root2)

编辑:添加解决方案以返回主窗口。

要在关闭class Welcome()时显示主窗口class Wages(),请将调用添加到函数update(),然后添加deiconify(),如下所示:

第1步 - 将Welcome()句柄存储到Wages()

Welcome::gotoWages()函数中,添加额外参数self.master

myGUI=Wages(root2,self.master)

Wages::__init__()函数中,管理额外参数mainwnd并存储它。

def __init__(self,master,mainwnd):

    self.nhours= DoubleVar()
    self.salaryh= DoubleVar()

    self.mainwnd = mainwnd # store the 'self.master` of the main window
    self.master= master

第2步 - 使用存储的mainwnd来显示Welcome窗口

修改Wages::myquit()功能:

def myquit(self):
    self.master.destroy() # close the current Wages window
    self.mainwnd.update() # update the main window
    self.mainwnd.deiconify() # un-minimize the main window