AttributeError:部分初始化的模块'juego'没有属性'VENTANA_VERTICAL'(很可能是由于循环导入)

时间:2020-09-10 17:33:29

标签: python compiler-errors pygame

我正在尝试从同一文件夹中的“ juego.py”文件访问变量和函数,但出现错误。当前文件名为“ pantalla_fin.py”

错误: 在game_over_y = juego.VENTANA_VERTICAL / 3的第5行,输入文件“ c:\ Users \ danie \ OneDrive \ Escritorio \PROGRAMACIÓN\ ArchivosPyhton \ Pong \ view \ pantalla_fin.py” AttributeError:部分初始化的模块'juego'没有属性'VENTANA_VERTICAL'(很可能是由于循环导入)

import juego
import pygame

# Coordinates depending on the message
game_over_y = juego.VENTANA_VERTICAL/3
pulsar_y = juego.VENTANA_VERTICAL/3+75

# Function that draws the text 
def escribir_mensaje(tamaño, frase, y):
    font = pygame.font.Font("C:/Users/danie/OneDrive/Escritorio/PROGRAMACIÓN/ArchivosPyhton/Pong/imagenes_y_fuentes/fuente_numeros.ttf", tamaño)
    ancho = font.height(frase)
    x = juego.VENTANA_HORIZONTAL/2 - ancho/2
    
    mensaje = font.render(frase, True, (255, 255, 255))
    juego.ventana.blit(mensaje, (x, y))

# Main function
def game_over(ganador):
    
    running = True
    while running:
        juego.ventana.fill(juego.NEGRO)
        if ganador == "score1":
            escribir_mensaje(64, "You have won", game_over_y)
        elif ganador == "score2":
            escribir_mensaje(64, "Game Over", game_over_y)
        escribir_mensaje(16, "Click to restart", pulsar_y)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False

            if event.type == pygame.MOUSEBUTTONDOWN:
                if event.button==1:
                    juego.main()

        pygame.display.flip()
        pygame.time.Clock().tick(juego.FPS)

    pygame.quit()

game_over("score1")

1 个答案:

答案 0 :(得分:-1)

我过去也遇到过同样的问题,之所以遇到这个问题,是因为您和我一样,可能在您的代码文件之间创建了循环依赖关系。让我更好地解释一下:如果您创建一个game.py文件,该文件调用了screen_fin.py文件的某些函数或变量,并且还从game.py中调用了函数,那么您将有两个文件相互调用,这使得很多问题。当我更改项目中的文件导入时,所有这些问题都消失了。但是,如果需要,您可以在此处看到更多信息:https://stackabuse.com/python-circular-imports/

我希望这是XD的重点