2014-10-17 135 views
1

要开始了,让我告诉你我的代码:如何使用Tkinter按钮退出Python?

import Tkinter 
import tkMessageBox 
import time 
import sys 

def endProgam(): 
    raise SystemExit 
    sys.exit() 

top = Tkinter.Tk() 
B = Tkinter.Button(top, text = "Hello", command = endProgam) 
B.pack() 
top.mainloop() 

你可以endProgram()我曾尝试2种出口的命令下看到的,不工作。我从来没有把它们用在一起,我只是试图展示我迄今使用的方法。这些方法我发现这里和其他网站上的方法,但如果我尝试要么,我得到这个错误:

Traceback (most recent call last): 
    File "C:\Users\Sa'id\Documents\Learning Programming\Python\Tkinter Tuts.py", line 22, in <module> 
    top.mainloop() 
    File "C:\Python27\lib\lib-tk\Tkinter.py", line 1070, in mainloop 
    self.tk.mainloop(n) 
    File "C:\Python27\lib\lib-tk\Tkinter.py", line 1488, in __call__ 
    raise SystemExit, msg 
SystemExit 

我似乎无法找到一个解决这个,我希望,也许有人在这里可以帮助我。如果你需要更多的细节,我会很乐意提供你所需要的。

+2

我无法重现问题使用你的代码,如图所示(在Win7-x64上使用Python 2.7.8)。你如何运行脚本? – martineau 2014-10-17 02:05:34

+0

你是说你即使调用'sys.exit()'也会得到“引发SystemExit”的错误信息吗? – 2014-10-17 11:17:11

+0

@martineau,我也在运行2.7(.8),我在SublimeREPL中使用Sublime Text 3来运行我的Python程序。这个问题已经得到解答,谢谢你的帮助。 – Scoutdrago3 2014-10-17 23:31:22

回答

5

有两种功能,您应该使用退出一个窗口:

  • destroy()
  • quit()

在这里,你必须使用两者之一的代码:

import Tkinter 
import tkMessageBox 
import time 
import sys 

def endProgam(): 
    # top.quit() 
    top.destroy()   

top = Tkinter.Tk() 

B = Tkinter.Button(top, text = "Hello", command = endProgam) 
B.pack() 
top.mainloop() 
+0

感谢,'top.destroy()'工作,但'top.quit()'只有一半有效,因为SublimeREPL已经终止,但窗口仍然存在。再次,谢谢。 – Scoutdrago3 2014-10-17 23:34:52

+0

很高兴帮忙! – W1ll1amvl 2014-10-17 23:44:49