在python中退出mainloop
发布于 2021-01-29 18:01:24
尽管我是一种使用其他语言进行实验的程序员,但是我在Python中还是一个新手。我一直在尝试做一个非常简单的事情,那就是在启动后退出mainloop。看来这很重要。下面的程序仅产生一系列事件。一切似乎都正常,但是我无法关闭最后一个窗口。该怎么办?
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()
关注者
0
被浏览
206
1 个回答
-
致电
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()
此外,
CloseEnd
如果您只想调用函数,则无需创建类root.quit
。