在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 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    致电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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看