我试图使用pythonw运行pygame程序以避免出现控制台窗口。这会导致与print语句相关的奇怪问题。
基本上,程序将在几秒钟后退出,没有错误消息。我做的印刷越多,发生得越快。 如果我在空闲或命令提示符(或在Linux)中运行它,该程序工作正常。只有在使用pythonw启动时才会出现此问题(右键单击,打开方式,pythonw)。
我在Windows XP 32位上使用python 2.7.11。 pygame 1.9.1release。
有解决方法吗?为什么程序只是终止而没有错误?
import pygame
from pygame.locals import *
succeeded, failed = pygame.init()
display_surface = pygame.display.set_mode((320, 240))
clock = pygame.time.Clock()
terminate = False
while terminate is False:
for event in pygame.event.get():
if event.type == QUIT:
terminate = True
area = display_surface.fill((0,100,0))
pygame.display.flip()
elapsed = clock.tick(20)
print str(elapsed)*20
pygame.quit()
答案 0 :(得分:0)
您无需删除print语句。保存它们以供以后调试。 ; - )
解决此问题的两个步骤:
py
文件中 - 现在不要将其更改为pyw
;说它是actualCode.py
runAs.pyw
,其中包含以下行# In runAs.pyw file, we will first send stdout to StringIO so that it is not printed
import sys # access to stdout
import StringIO # StringIO implements a file like class without the need of disc
sys.stdout = StringIO.StringIO() # sends stdout to StringIO (not printed anymore)
import actualCode # or whatever the name of your file is, see further details below
请注意,只需导入 actualCode 即可运行该文件,因此,在actualCode.py
中,您不应将所执行的代码括在我所称的{ {1}}条件。例如,
is it main running file