2014-09-19 66 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