pygame的主循环不起作用,pygame立即退出

问题描述 投票:2回答:2

我还有另一个问题。当我尝试运行代码时,pygame启动,然后立即停止。

这是我的代码:

import pygame
import os 
import time 
import random

pygame.init()
pygame.font.init()




def main():

    clock = pygame.time.Clock()

    win = pygame.display.set_mode((Win_Width, Win_Height))

    run = True
    while run:

        clock.tick(40)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False
                pygame.quit()

谢谢您的帮助。再见!

python module pygame
2个回答
3
投票

您的pygame循环包含在方法main中。但是main从未在任何地方被调用。考虑将以下块添加到文件的最底部

if __name__ == "__main__":
  main()

此块基本上只是检查您是否直接调用此文件,如果是,则调用您的main方法。

Core taxxe的答案在更详细地解释python的此功能方面做得很好


2
投票

很遗憾,我还不能发表评论,尽管我会以这种方式回答您的问题。

在执行代码之前,Python解释器读取源文件并定义一些特殊变量/全局变量。如果python解释器正在将该模块(源文件)作为主程序运行,则它将特殊的__name__变量设置为值“ main”。如果此文件是从另一个模块导入的,则__name__将设置为导入模块的名称。该模块的名称可用作__name__全局变量的值。

根据您的情况,您可以使用if等或直接使用main()调用来运行代码。

print "Always executed"

if __name__ == "__main__": 
    print "Executed when invoked directly"
else: 
    print "Executed when imported"

我希望这是可以理解和有益的。有关更多信息,请参见以下资源:


0
投票

[不幸的是,我还不能发表评论,尽管我会这样回答您的问题。

在执行代码之前,Python解释器读取源文件并定义一些特殊变量/全局变量。如果python解释器将该模块(源文件)作为主程序运行,则它将特殊的_ _name__变量设置为值“ _ _main__”。如果此文件是从另一个模块导入的,则_ _name__将设置为该模块的名称。模块的名称可用作_ _name__全局变量的值。就您而言,您可以使用if等或直接调用main()来运行代码。

print "Always executed"

if __name__ == "__main__": 
    print "Executed when invoked directly"
else: 
    print "Executed when imported"

希望是可以理解和帮助的。有关更多信息,请参见以下资源:

https://www.geeksforgeeks.org/what-does-the-if-name-main-do

What does if __name__ == "__main__": do?

© www.soinside.com 2019 - 2024. All rights reserved.