鎖定了我在YouTube的教程中的以下內容: https://www.youtube.com/watch?v=Zf-b2JVZs7g的Tkinter與sys.exit
當我們到了sys.exit(0)
Python的外殼似乎是迴應,但窗口創建鎖起來,而不是收盤。另一個奇怪的是,當我運行調試器時,程序按預期運行。
#Python 2.7.8
#Idle 2.7.8
#Tkinter 8.5.15
import sys
import Tkinter
import turtle
from Tkinter import *
def main():
root = Tk()
root.title("Draw!")
root.geometry("800x800")
cv = Canvas(root, width=600, height=600)
cv.pack(side=LEFT)
t = turtle.RawTurtle(cv)
screen = t.getscreen()
screen.setworldcoordinates(0,0,600,600)
frame = Frame(root)
frame.pack(side = RIGHT, fill = BOTH)
screen.tracer(0)
def quitHandler():
print ("Goodbye")
sys.exit(0)
##raise SystemExit
##exit()
quitButton = Button(frame, text="Quit", command = quitHandler)
quitButton.pack(side=BOTTOM)
def clickHandler(x,y):
t.goto(x,y)
screen.update()
screen.onclick(clickHandler)
def dragHandler(x,y):
t.goto(x,y)
screen.update()
t.ondrag(dragHandler)
root.mainloop()
if __name__ == "__main__":
main()
在視頻的評論有兩件事情,伸出我,但喜歡爲他工作我想不通爲什麼sys.exit(0)
不是爲我工作:
- 他使用Python 3
- 其他人都有這個相同的問題,並沒有任何答案,我可以看到。
我的猜測是這是一個版本問題,但(作爲n00b)我不知道問題是什麼。
Python關機_have_的細節從版本更改爲版本,甚至在3.x之內。我個人會在退出處理程序中放入root.destroy()而不是sys.exit(),並且會在mainloop()和main()調用返回後讓Python正常退出。由於打印'再見'不會打印到GUI,並可能失敗(如果您在Windows上使用pythonw運行應用程序),我會在main()調用後打印_after_。 –
謝謝Terry!我在下面的答案中添加了這些信息。 – twasbrillig