2014-10-17 137 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