2014-09-19 200 views
0

當我在控制檯窗口中單擊時,打印python代碼段暫停,如果按Enter等鍵,它將繼續打印。這使得我的GUI程序也在控制檯中打印出一些沒有響應的東西,然後我必須在該控制檯中按下一個鍵。如何解決它?Windows cmd控制檯停止打印

import time 
import random 

running = True 
while running: 
    try: 
     r = random.randint(1, 100) 
     print 'hello %s' % r 
     time.sleep(2) 
    except KeyboardInterrupt: 
     running = False 
+3

我認爲這是由設計,因爲你的控制檯窗口中的[快速編輯](http://blogs.msdn.com/b/oldnewthing/archive/2007/09/13/4886108運行。 aspx)模式。 – 2014-09-19 22:23:34

+0

感謝您的提示。 – metaphy 2014-09-22 21:46:55

+0

不客氣。回覆:您的回答是正確的,但我相信在明文或代碼註釋中添加解釋會增加其價值。 (我還建議你的目標是在*所有*特殊情況下恢復以前的控制檯模式,而不僅僅是'KeyboardInterrupt')。 – 2014-09-22 21:52:14

回答

-2
import time 
import random 
import ctypes 


win32 = ctypes.windll.kernel32 
hin = win32.GetStdHandle(-10) 
mode = ctypes.c_int(0) 
win32.GetConsoleMode(hin, ctypes.byref(mode)) 
old_mode = mode.value 
# disable Windows console(cmd.exe) quick edit mode 
new_mode = old_mode & (~0x0040) 
win32.SetConsoleMode(hin, new_mode) 


running = True 
while running: 
    try: 
     r = random.randint(1, 100) 
     print 'hello %s' % r 
     time.sleep(1) 
    except (Exception, KeyboardInterrupt): 
     win32.SetConsoleMode(hin, old_mode) 
     running = False