Windows cmd控制台停止打印
问题描述:
当我在控制台窗口中单击时,打印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
答
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
我认为这是由设计,因为你的控制台窗口中的[快速编辑](http://blogs.msdn.com/b/oldnewthing/archive/2007/09/13/4886108运行。 aspx)模式。 – 2014-09-19 22:23:34
感谢您的提示。 – metaphy 2014-09-22 21:46:55
不客气。回复:您的回答是正确的,但我相信在明文或代码注释中添加解释会增加其价值。 (我还建议你的目标是在*所有*特殊情况下恢复以前的控制台模式,而不仅仅是'KeyboardInterrupt')。 – 2014-09-22 21:52:14