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