Pygame sur plusieurs fichiers
Flayme -
Bonjour,
J'aimerais comprendre pourquoi je ne peux pas séparer les tâches pygame dans plusieurs fichiers.
Dans l'exemple 1, la fenêtre s'ouvre normalement et peut être refermée lorsqu'on clique sur le bouton correspondant
import pygame import sys pygame.init() print('openning app') pygame.display.set_caption('title') pygame.display.set_mode((100, 100)) running = True while running is True: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False print('closing app') pygame.quit() sys.exit()
Dans l'exemple 2, (option voulue) la procédure de fermeture est dans un autre fichier importé dans la procédure d'ouverture de la fenêtre
import pygame import file pygame.init() print('openning app') pygame.display.set_caption('title') pygame.display.set_mode((100, 100)) running = True while running is True: file
import pygame import sys for event in pygame.event.get(): if event.type == pygame.QUIT: running = False print('closing app') pygame.quit() sys.exit()
Dans ce cas la console me dit que la fenêtre n'est pas encore ouverte
pygame.error: video system not initialized
- Pygame sur plusieurs fichiers
- Renommer plusieurs fichiers en même temps - Guide
- Fichiers epub - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Explorateur de fichiers - Guide
- Fichiers bin - Guide
4 réponses
Bonjour, essaie de faire une chronologie de ce qu'il se passe dans ton code afin de comprendre pourquoi cette erreur.
Bonjour,
Ah tiens, c'est marrant, ça !
J'ignorais que l'on pût invoquer directement un fichier importé par son nom, sans qu'il y ait de fonction dedans:
prog.py:
import file file
et file .py:
print('closing ...')
Je me coucherais moins bête ce soir ...
Bonjour,
Le problème dans ton 2nd exemple, c'est que pygame est réimporté, d'où le message d'erreur. Je ne pense pas que tu puisses découper ton fichier en deux de manière élégante comme tu tentes de le faire (et à vrai dire je ne vois pas trop l'intérêt). Mais si c'est vraiment ce que tu veux faire, peut-être peux tu passer le module pygame en paramètre a une fonction qui sera implémentée dans un second fichier...
Bonne chance
C'est normal que ça ne marche pas, il faut mettre ton code dans une fonction:
main.py (j'ai enlever le 'is True' qui ne sert à rien):
import pygame
from file import quitter
pygame.init()
print('openning app')
pygame.display.set_caption('title')
pygame.display.set_mode((100, 100))
running = True
while running:
quitter()
file.py:
import pygame
import sys
def quitter():
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
print('closing app')
pygame.quit()
sys.exit()