使用pythonw运行时,pygame程序退出时没有错误消息

时间:2016-01-01 04:51:34

标签: python-2.7 console pygame exit pythonw

我试图使用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()

1 个答案:

答案 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