在Python中退出主循环
虽然我在其他编程语言上有一些经验,但我在Python方面还是个新手。我一直在尝试做一件非常简单的事情,就是在启动后退出主循环。看起来这似乎很复杂。下面的程序只是在执行一系列事件。所有的东西看起来都在正常运行,但我就是无法关闭最后一个窗口……我该怎么办呢?
from Tkinter import *
root=Tk()
theMainFrame=Frame(root)
theMainFrame.pack()
class CloseAfterFinishFrame1(Frame): # Diz que herda os parametros de Frame
def __init__(self):
Frame.__init__(self,theMainFrame) # Inicializa com os parametros acima!!
Label(self,text="Hi",font=("Arial", 16)).pack()
button = Button (self, text = "I am ready", command=self.CloseWindow,font=("Arial", 12))
button.pack()
self.pack()
def CloseWindow(self):
self.forget()
CloseAfterFinishFrame2()
class CloseAfterFinishFrame2(Frame): # Diz que herda os parametros de Frame
def __init__(self):
Frame.__init__(self,theMainFrame) # Inicializa com os parametros acima!!
Label(self,text="Hey",font=("Arial", 16)).pack()
button = Button (self, text = "the End", command=self.CloseWindow,font=("Arial", 12))
button.pack()
self.pack()
def CloseWindow(self):
self.forget()
CloseEnd()
class CloseEnd():
theMainFrame.quit()
CloseAfterFinishFrame1()
theMainFrame.mainloop()
2 个回答
0
你可以使用 root.destroy() 这个命令。我在我之前的程序中试过,感觉挺有效的,希望对你也有帮助。
9
调用 root.quit()
,而不是 theMainFrame.quit
:
import Tkinter as tk
class CloseAfterFinishFrame1(tk.Frame): # Diz que herda os parametros de Frame
def __init__(self, master):
self.master = master
tk.Frame.__init__(self, master) # Inicializa com os parametros acima!!
tk.Label(self, text="Hi", font=("Arial", 16)).pack()
self.button = tk.Button(self, text="I am ready",
command=self.CloseWindow, font=("Arial", 12))
self.button.pack()
self.pack()
def CloseWindow(self):
# disable the button so pressing <SPACE> does not call CloseWindow again
self.button.config(state=tk.DISABLED)
self.forget()
CloseAfterFinishFrame2(self.master)
class CloseAfterFinishFrame2(tk.Frame): # Diz que herda os parametros de Frame
def __init__(self, master):
tk.Frame.__init__(self, master) # Inicializa com os parametros acima!!
tk.Label(self, text="Hey", font=("Arial", 16)).pack()
button = tk.Button(self, text="the End",
command=self.CloseWindow, font=("Arial", 12))
button.pack()
self.pack()
def CloseWindow(self):
root.quit()
root = tk.Tk()
CloseAfterFinishFrame1(root)
root.mainloop()
另外,如果你只是想调用函数 root.quit
,那么就没必要创建一个类 CloseEnd
。