2012-07-12 131 views
3

我有一個程序在Python中運行,沒有控制檯(也就是說,我使用py2exe編譯它)。我希望人們能夠從主菜單中退出,或者通過遊戲中的特定按鍵(比如Shift + Q)退出。我現在正在Windows上運行它,儘管我正在編譯Linux/Mac版本。如果沒有'while'循環運行,按下X按鈕就可以工作,並且正確關閉它,否則似乎'存儲'關閉命令等​​到當前循環關閉。在python程序中退出函數

至於菜單選項,我已經通過文件和徹底#2看了看,試圖退出(),出口(),sys.exit()和每一個組合我能找到,但每次我得到:

Traceback (most recent call last): 
    File "alphatime.pyw", line 61177, in <module> 
    File "alphatime.pyw", line 53970, in place_menu 
NameError: global name 'sys' is not defined 

如果我嘗試sys.exit,然後:

Traceback (most recent call last): 
    File "alphatime.pyw", line 61177, in <module> 
    File "alphatime.pyw", line 53970, in place_menu 
NameError: global name 'quit' is not defined 

,如果我嘗試只是 「退出()」。我聽說過'提高'需要關閉程序,但我不清楚這意味着什麼(我是Python的新手),以及我會如何去做。

所以,我的問題是雙重的。

首先,有什麼我可以把循環識別按鍵的東西,將承認'X'被點擊,並關閉?

其次,是否有一個合適的命令可以關閉程序?我無法弄清楚爲什麼這些命令不起作用,而且我有很多使用該程序的人的抱怨,或者他們必須按Ctrl-Alt-Del,或者其他什麼。我相信

import os 
try: 
    os._exit(return_code) 
except: 
    pass 

會的工作,但在這一點上,我不知道我在蟒蛇勝任適當地進行部署。提前致謝!

+0

那麼你可以使用一個信號,或者只是使用2個線程,主要等待關閉事件並退出,終止其他所有線程。 – Maresh 2012-07-12 10:43:25

+0

whaat?他說他是初學者,不要混淆他。 :) – iKlsR 2012-07-12 10:46:20

+0

我承認,我的眼睛盯着那個:)。但第一個問題現在已經解決了,儘管我仍然對'X'按鈕問題感到困惑。 – UltimaRatioRegum 2012-07-12 10:57:48

回答

5

沒有你的任何機會

import sys 

,因爲這應該工作!

+0

啊!我一直在做「從系統」並退出,但沒有得到所有系統。多麼尷尬。我的感謝! 但點擊'X'按鈕在主菜單中仍然不起作用。有沒有辦法「捕捉」它? – UltimaRatioRegum 2012-07-12 10:56:19

3

NameError: global name 'sys' is not defined

之前,你可以使用sys.exit(),你必須import sys

這是退出程序的最佳方式。以_開頭的函數名稱被認爲是內部函數名稱,除非您真的真的試圖做一些奇怪的事情,否則不應使用它。