首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >退出python中的mainloop

退出python中的mainloop
EN

Stack Overflow用户
提问于 2013-02-13 01:51:22
回答 1查看 29.5K关注 0票数 5

虽然我是一名经验丰富的其他语言程序员,但我对Python还是很陌生的。我一直在尝试做一件非常简单的事情,那就是在启动后退出主循环。这似乎是一件大事。下面的程序只生成一系列事件。一切似乎都在工作,但我无法关闭最后的窗口...我该怎么办?

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-13 02:00:15

调用root.quit(),而不是theMainFrame.quit

代码语言:javascript
复制
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类。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14838635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档